我有这行代码:
console.log "source = #{@source.alignment} unit = #{unit.alignment}: " + (@source.alignment is not unit.alignment)
这是打印到控制台:
source = good unit = bad: false
为什么打印“假”?不应该打印“true”吗?从逻辑上讲,好的“不是”坏的。
这个
console.log "source = #{@source.alignment} unit = #{unit.alignment}: " + (@source.alignment != unit.alignment)
打印
source = good unit = bad: true
正如预期的那样。
有什么不同?我应该什么时候使用
is not
?
最佳答案
这是一个运算符优先级问题:
a is not b => a is (not b)
这意味着这会编译到下一个 js:
a === !b
在您的情况下,b 是 unit.alignment,并且由于该 var 存在且其值不为假,因此 !unit.alignment 返回 false
要解决您的问题,请查看
isnt
运算符(operator) in Coffeescript docs
关于coffeescript - 在 coffeescript 中, "is not"和 "!="有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17226549/