Coffeescapet语法:结构错误

Coffeescript Syntax: Structure is wrong

本文关键字:错误 结构 语法 Coffeescapet      更新时间:2023-09-26

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

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

我希望它编译成这样:

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

取而代之的是:

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

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

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

添加括号。

就一个好的风格而言,只有当语法扰乱了你的意图时,你才应该省略语法。在这种情况下,省略它们将失去您的意图。形式遵循功能。这里需要括号来声明先例,Coffeescept因此支持它们。

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

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;)

coco和livescript(在npm或github上)都是从coffeescript派生的,并且更"空间敏感",这允许您执行:

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

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

两者都编译为

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