CoffeeScript 没有 C 风格的?:
三元组,所以:
!@valid() ? 'disabled' : ''
被解析为:
!@valid() ? ({ 'disabled' : '' })
这是一个存在运算符:
存在算子
在 JavaScript 中检查变量是否存在有点困难。if (variable)
... 接近,但因零、空字符串和错误而失败。CoffeeScript 的存在运算符?
返回 true ,除非变量为null或undefined,这使得它类似于 Ruby 的nil?
与对象文字相结合。因此,您会看到奇怪的 JavaScript。
CoffeeScript 使用if
表达式而不是?:
:
CoffeeScript 可以将if语句编译成 JavaScript 表达式,尽可能使用三元运算符,否则使用闭包包装。CoffeeScript 中没有明确的三元语句——您只需在一行中使用常规的if语句。
如果你在 JavaScript 中这样说:
!this.valid() ? 'disabled' : ''
那么你会在 CoffeeScript 中这样说:
if !@valid() then 'disabled' else ''
并且由于"#{...}"
使用表达式:
className: "btn btn-primary #{if @valid() then 'disabled' else ''}"