我简化了我的代码以显示问题。当我使用这个Coffeescript片段时:
$("<div>")
.text "hi"
.appendTo "body"
我希望它能像这样编译:
$("<div>").text("hi").appendTo("body")
它的作用是:
$("<div>").text("hi".appendTo("body"))
我发现你可以保留括号并且它有效,但我想这不是你应该写Coffeescript的方式。
有谁能告诉我我应该如何编写它以便编译成所需的输出?非常感谢你。
答案 0 :(得分:4)
添加括号。
至于一个好的风格,你应该只在语法混乱时省略语法。在这种情况下,省略它们会失去你的意图。表格遵循功能。你需要括号来宣布先例,因此Coffeescript支持它们。
答案 1 :(得分:3)
我发现你可以保留括号并且它有效,但我想这不是你应该写Coffeescript的方式。
CoffeeScript中的括号是可选的,但这并不意味着你不假设使用它们。随意使用它们!在某些情况下,和你的一样,甚至都需要它们。
对我来说,带有可选括号的大赢是匿名回调和其他情况,否则括号将跨越多行,如下所示:
foo 'bar', (err, res) ->
# Do stuff
对我而言,优于
foo('bar', (err, res) ->
# Do stuff
)
但即使这是你的风格,也要去吧!
总而言之,只需写下:
$("<div>")
.text("hi")
.appendTo("body")
修改甚至
$("<div>").text("hi").appendTo("body")
在这种特殊情况下,你当然可以这样做:
$("<div>", text: "hi").appendTo("body")
TIMTOWDY;)
答案 2 :(得分:0)
coco和livescript(在npm或github上)都来自coffeescript并且更“空间敏感”,这使你可以这样做:
$ "<div>" .text "hi" .appendTo "body"
和
$("<div>")
.text "hi"
.appendTo "body"
编译为
$("<div>").text("hi").appendTo("body");