此CoffeeScript代码:
root = document.getElementById "hello"
document.addEventListener("DOMContentLoaded", () => {
root.innerHTML = "goodbye"
}, false)
给出一个error: unexpected =
。当我编译此代码时:
root = document.getElementById "hello"
document.addEventListener("DOMContentLoaded", =>
root.innerHTML = "goodbye"
, false)
有效。但是,我真的不喜欢省略花括号的歧义。
有没有办法用花括号或等效的花括号包围CoffeeScript代码块?
答案 0 :(得分:0)
大括号({}
)不能用于coffeescript中的代码块。而是使用缩进。
在Coffeescript中,string interpolation中使用花括号,defining objects中使用(可选)花括号。
使用缩进代替使用花括号{}包围函数,if语句,切换和try / catch中的代码块。
在您的示例中,花括号被解释为对象定义,其中=
引发异常,因为它期望:
定义对象属性。
定义代码块的缩进是Coffeescript的核心功能。就我个人而言,我根本不认为这段代码是模棱两可的。但是在函数不是最终参数的情况下,以结尾的, false
进行读取非常奇怪。
我建议从事件侦听器中拆分出函数定义:
onDOMContentLoaded =>
root.innerHTML = "goodbye"
document.addEventListener "DOMContentLoaded", onDOMContentLoaded, false
如果您确实想对函数进行定界,则可以将其包装在括号中。不过,您将需要在圆括号内包括=>
document.addEventListener("DOMContentLoaded", ( =>
root.innerHTML = "goodbye"
), false)