Coffeescript语法:结构错误

时间:2012-08-22 16:04:31

标签: javascript jquery coffeescript

我简化了我的代码以显示问题。当我使用这个Coffeescript片段时:

$("<div>")
.text "hi"
.appendTo "body"

我希望它能像这样编译:

$("<div>").text("hi").appendTo("body")

它的作用是:

$("<div>").text("hi".appendTo("body"))

我发现你可以保留括号并且它有效,但我想这不是你应该写Coffeescript的方式。

有谁能告诉我我应该如何编写它以便编译成所需的输出?非常感谢你。

3 个答案:

答案 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");