为什么 CoffeeScript 不支持 `==`?
Why does CoffeeScript not support `==`?
我正在学习 CoffeeScript 并正在使用 js2.coffee 将我的 Javascript 文件转换为 CoffeeScript。有几行,它警告我
Operator '==' is not supported in CoffeeScript, use '===' instead.
这背后的原理是什么? 为什么 CoffeeScript 不支持 ==
?
出于与大多数 Linter 警告您不要使用它相同的原因。
这是一个奇怪的实现运算符,具有令人惊讶的副作用。
"\n\t" == false
// => true
有很多关于该主题的文章,但最值得注意的是 ==
运算符列出了 Douglas Crockford 的 things to avoid。
实际上,CoffeeScript 将 ==
编译为 JavaScript 的 ===
(并将 !=
编译为 !==
,如您在 documentation 中所见).
所以底线是,它不支持它。我猜这是因为 ==
在检查相等性之前进行了类型转换 如果 操作数是不同的类型。由于其 意外结果 和 性能 ,此转换是一种不受欢迎的做法。
关于==
vs ===
的问题网上讨论很多。 MDN docs 帮助我更好地理解了这个问题。
我正在学习 CoffeeScript 并正在使用 js2.coffee 将我的 Javascript 文件转换为 CoffeeScript。有几行,它警告我
Operator '==' is not supported in CoffeeScript, use '===' instead.
这背后的原理是什么? 为什么 CoffeeScript 不支持 ==
?
出于与大多数 Linter 警告您不要使用它相同的原因。
这是一个奇怪的实现运算符,具有令人惊讶的副作用。
"\n\t" == false
// => true
有很多关于该主题的文章,但最值得注意的是 ==
运算符列出了 Douglas Crockford 的 things to avoid。
实际上,CoffeeScript 将 ==
编译为 JavaScript 的 ===
(并将 !=
编译为 !==
,如您在 documentation 中所见).
所以底线是,它不支持它。我猜这是因为 ==
在检查相等性之前进行了类型转换 如果 操作数是不同的类型。由于其 意外结果 和 性能 ,此转换是一种不受欢迎的做法。
关于==
vs ===
的问题网上讨论很多。 MDN docs 帮助我更好地理解了这个问题。