在coffeescript中,“is not”和“!=”之间有什么区别?

时间:2013-06-21 01:52:15

标签: coffeescript

我有这行代码:

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

这是将其打印到控制台:

  

source = good unit = bad: false

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

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

打印

  

source = good unit = bad: true

正如所料。

有什么区别?我什么时候应该使用is not

1 个答案:

答案 0 :(得分:6)

这是运营商优先问题:

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

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

a === !b

在你的情况下,b是unit.alignment,并且因为var存在且其值不是假的,所以!unit.alignment返回false

要解决您的问题,请查看isnt运算符in Coffeescript docs