Coffeescript 严格比较
Coffeescript strict comparisons
我有以下代码:
$(document).bind 'gform_confirmation_loaded', (event, form_id) =>
if form_id == 3
// Do stuff here
...
如果我运行:
typeof form_id
我得到:
number
当然同样适用于:
typeof 3
但是,当为 form_id 传入值 3 时,比较 returns false。
Coffeescript 在编译时将抽象比较更改为严格比较。如果我将输出修改为抽象比较 if 语句 returns true.
鉴于类型和值相等,我认为 if 语句应该通过严格比较返回 true?
如有任何帮助,我们将不胜感激。
我不认为 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
在 CoffeeScript 中将是 false
。听起来很熟悉?
我认为您的图书馆正在为您提供 new Number(3)
。如果是这种情况,那么您可以使用 Number(form_id)
:
获得一个普通的旧号码
if Number(form_id) == 3
# Do stuff here
我有以下代码:
$(document).bind 'gform_confirmation_loaded', (event, form_id) =>
if form_id == 3
// Do stuff here
...
如果我运行:
typeof form_id
我得到:
number
当然同样适用于:
typeof 3
但是,当为 form_id 传入值 3 时,比较 returns false。
Coffeescript 在编译时将抽象比较更改为严格比较。如果我将输出修改为抽象比较 if 语句 returns true.
鉴于类型和值相等,我认为 if 语句应该通过严格比较返回 true?
如有任何帮助,我们将不胜感激。
我不认为 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
在 CoffeeScript 中将是 false
。听起来很熟悉?
我认为您的图书馆正在为您提供 new Number(3)
。如果是这种情况,那么您可以使用 Number(form_id)
:
if Number(form_id) == 3
# Do stuff here