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

Typecasting issues, how to use good old == instead of ===

本文关键字:问题 何使用 类型转换      更新时间:2023-09-26

我真的很喜欢Coffeescript,但最近让我抓狂的一件事是if语句中的数字和字符串的类型问题。通常情况下,这不是问题,因为Javascript不在乎何时使用==,但Coffeescript会将所有比较转换为===。有没有办法让草率的旧比较重新回来?我喂愚蠢的东西,但我没有在上面找到任何东西。

原因是我使用出色的http://js2coffee.org/为了更容易阅读,但我输入了类型转换问题,因为===比较被===替换。不用说,我很懒地重构整个代码;)。

这是经过设计的。引用《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

为了避免这些令人头疼的问题,您应该执行类型转换显式

正如asawyer所说,这是经过设计的。如果您真的认为您需要==比较,那么您可以将其放在backtick:中

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