我有这行代码:
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
?
这是运营商优先问题:
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
运算符