5

我有这行代码:

console.log "source = #{@source.alignment} unit = #{unit.alignment}: " + (@source.alignment is not unit.alignment)

这是将其打印到控制台:

来源 = 好单位 = 坏:

为什么打印“假”?它不应该打印“真实”吗?从逻辑上讲,好的“不是”坏的。

这个

console.log "source = #{@source.alignment} unit = #{unit.alignment}: " + (@source.alignment != unit.alignment)

印刷

来源 = 好单位 = 坏:

正如预期的那样。

有什么不同?我应该什么时候使用is not

4

1 回答 1

7

这是一个运算符优先级问题:

a is not b => a is (not b)

这意味着这将编译为下一个 js:

a === !b

在您的情况下,b 是 unit.alignment,并且由于该 var 存在且其值不是假的,因此 !unit.alignment 返回 false

要解决您的问题,请查看Coffeescript 文档isnt中的运算符

于 2013-06-21T01:59:37.690 回答