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

标签 coffeescript

我有这行代码:

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/

相关文章:

javascript - JavaScript 代码上的 bool 条件不起作用

node.js - Mocha、should.js 和断言异常

javascript - 如何避免 CoffeeScript 方法变量被包裹在对象文字中?

javascript - 需要将复选框信息发送到JS文件

用coffeescript保存backbone.js

javascript - 尝试让coffescript正确编译为 Node 服务器的javascript

javascript - Parsley 自定义验证器,用于是否选择了选择选项

javascript - 如何在不调用其构造函数的情况下复制对象及其原型(prototype)链?

javascript - 遍历到距离点击jquery的元素最近的元素

javascript - CoffeeScript 函数参数