我有这行代码:
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
?
答案 0 :(得分:6)
这是运营商优先问题:
a is not b => a is (not b)
这意味着这将编译为下一个js:
a === !b
在你的情况下,b是unit.alignment,并且因为var存在且其值不是假的,所以!unit.alignment返回false
要解决您的问题,请查看isnt
运算符in Coffeescript docs