Coffeescript строгие сравнения
У меня есть следующий код:
$(document).bind 'gform_confirmation_loaded', (event, form_id) =>
if form_id == 3
// Do stuff here
...
Если я бегу:
typeof form_id
Я получил:
number
Конечно, то же самое верно для:
typeof 3
Однако когда передается значение 3 для form_id, сравнение возвращает false.
Coffeescript меняет абстрактное сравнение на строгое при компиляции. Если я изменяю вывод для абстрактного сравнения, оператор if возвращает true.
Учитывая, что тип и значение равны, оператор if должен возвращать true со строгим сравнением, я думаю?
Любая помощь приветствуется.
1 ответ
Я не думаю, что вы получите Number
за typeof 3
, typeof 3
является 'number'
и это не то же самое, что Number
, В JavaScript, если у вас есть a = 3
а также b = new Number(3)
, затем:
a == b // true
a === b // false
typeof a // 'number'
typeof b // Number
Конечно в CoffeeScript, ==
это JavaScript ===
так a == b
будет false
в CoffeeScript. Звучит знакомо?
Я думаю, что ваша библиотека дает вам new Number(3)
, Если это так, то вы можете получить простой старый номер, используя Number(form_id)
:
if Number(form_id) == 3
# Do stuff here