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

tho*_*sf1 6 javascript coffeescript typecasting-operator

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

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

asa*_*yer 11

这是设计的.引用" CoffeeScript:加速JavaScript开发 "一书

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
Run Code Online (Sandbox Code Playgroud)

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


Jiv*_*ngs 10

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

if `foo == bar`
  alert 'Sloppy comparison true'
Run Code Online (Sandbox Code Playgroud)