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
Другие вопросы по тегам