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

Dan*_*lan 4 coffeescript

我有这行代码:

console.log "source = #{@source.alignment} unit = #{unit.alignment}: " + (@source.alignment is not unit.alignment)
Run Code Online (Sandbox Code Playgroud)

这是打印到控制台:

source = good unit = bad:false

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

这个

console.log "source = #{@source.alignment} unit = #{unit.alignment}: " + (@source.alignment != unit.alignment)
Run Code Online (Sandbox Code Playgroud)

版画

source = good unit = bad:true

正如所料.

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

Jua*_*ero 7

这是运营商优先问题:

a is not b => a is (not b)
Run Code Online (Sandbox Code Playgroud)

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

a === !b
Run Code Online (Sandbox Code Playgroud)

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

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