类型问题,如何使用旧的==而不是===

时间:2012-03-06 13:44:24

标签: javascript coffeescript typecasting-operator

我真的很喜欢Coffeescript,但最近让我发疯的一件事就是在if语句中使用Numbers和Strings的类型问题。通常不是问题,因为当您使用==时Javascript不关心,但Coffeescript将所有比较转换为===。有没有办法得到草率的旧==比较回来?我喂愚蠢但我还没找到任何东西。

原因是我使用辉煌的http://js2coffee.org/转换了其他人的代码以使其更容易阅读,但随后我输入了类型转换问题,因为==比较被替换为===。不用说我懒得重构整个代码;)。

2 个答案:

答案 0 :(得分:11)

这是设计的。 引用书CoffeeScript: Accelerated JavaScript Development

  

CoffeeScript的is和==都编译成JavaScript的===;没有   获取JavaScript的==的松散,类型强制等式检查的方法,   这被JSLint和其他人所厌恶,作为许多人的来源   “WTF?”时刻。我们借一个例子吧   http://wtfjs.com/2011/02/11/all-your-commas-are-belong-to-Array

",,," == new Array(4) // true
There are also cases where == isn’t transitive:
'' == '0' // false
0 == '' // true
0 == '0' // true
  

为避免这些头疼,您应该执行类型转换   明确地

答案 1 :(得分:10)

正如asawyer所说,这是设计的。如果你真的认为你需要==比较,那么你可以把它放在反引号中:

if `foo == bar`
  alert 'Sloppy comparison true'