Javascript 函数调用的Coffeescript括号

Javascript 函数调用的Coffeescript括号,javascript,syntax,coffeescript,Javascript,Syntax,Coffeescript,Coffeescript为函数调用提供了设置或省略括号的自由。像 alert 'Hi folks' alert ('Hi folks') 他们是平等的 现在我想知道,可能是因为对coffeescript的经验不足,它的语法和它保持简单的目的,是否可以为下面这样的语句添加括号。我知道没有必要 编辑:如果我以与alert语句相同的方式应用该选项来设置括号,那么我会假设该语法不会对最终的js产生任何影响 将相当于JavaScript代码 define(function(require) { retu

Coffeescript为函数调用提供了设置或省略括号的自由。像

alert 'Hi folks'
alert ('Hi folks')
他们是平等的

现在我想知道,可能是因为对coffeescript的经验不足,它的语法和它保持简单的目的,是否可以为下面这样的语句添加括号。我知道没有必要

编辑:如果我以与alert语句相同的方式应用该选项来设置括号,那么我会假设该语法不会对最终的js产生任何影响

将相当于JavaScript代码

define(function(require) { return 'goodbye' })
也就是说,使用函数作为其第一个(也是唯一一个)参数来调用
define
。当您提出问题时,这可能不是您所期望的代码片段所做的

当我玩CoffeeScript时,我发现在网上的“try CoffeeScript”对话中尝试一些东西非常有帮助。这使您可以查看给定代码段编译到的JavaScript,并立即查看添加括号或更改缩进对结果JavaScript代码的影响。我绝对建议您这样做。:-)

编辑以反映问题中的编辑:

是的,在函数周围添加括号(
(require)->返回“再见”
)是有效的,并且不会改变行为。但是请注意,“
foo(bar)
”和“
foo(bar)
”由解析器进行不同的解析;在前者中,括号表示优先级(priority,即“常规括号”),在后者中,括号表示函数调用括号

foo-bar
”、“
foo(bar)
”、“
foo(bar)
”都做同样的事情,但是“
foo-bar,baz
”和“
foo(bar,baz)
”都很好,
foo(bar,baz)
”是一个语法错误

将相当于JavaScript代码

define(function(require) { return 'goodbye' })
也就是说,使用函数作为其第一个(也是唯一一个)参数来调用
define
。当您提出问题时,这可能不是您所期望的代码片段所做的

当我玩CoffeeScript时,我发现在网上的“try CoffeeScript”对话中尝试一些东西非常有帮助。这使您可以查看给定代码段编译到的JavaScript,并立即查看添加括号或更改缩进对结果JavaScript代码的影响。我绝对建议您这样做。:-)

编辑以反映问题中的编辑:

是的,在函数周围添加括号(
(require)->返回“再见”
)是有效的,并且不会改变行为。但是请注意,“
foo(bar)
”和“
foo(bar)
”由解析器进行不同的解析;在前者中,括号表示优先级(priority,即“常规括号”),在后者中,括号表示函数调用括号


foo-bar
”、“
foo(bar)
”、“
foo(bar)
”都做同样的事情,但是“
foo-bar,baz
”和“
foo(bar,baz)
”工作正常,
foo(bar,baz)
”是一个语法错误。

是的,可以将匿名函数括在括号中

我运行了这个简单的脚本

咖啡

define = (func) -> func()

console.log define ((require) ->
   return 'goodbye'
)
输出:

goodbye

是的,您可以将匿名函数包装在括号中

我运行了这个简单的脚本

咖啡

define = (func) -> func()

console.log define ((require) ->
   return 'goodbye'
)
输出:

goodbye

你能按你想要的方式添加最后一条带括号的语句吗?我不明白你想达到什么目的。你能用你想要的方式加上最后一句话和括号吗?我不明白你想达到什么目的。谢谢。其实这就是我要找的。我只是好奇,是否可以将匿名函数包装为一个简单的参数。Thx用于更新+附加信息。总而言之,在类似上面括号的情况下,括号确实会对最终输出产生影响:
define((函数(require){return'bye';})。而对于一个简单的参数——比如警报中的参数——它们没有?@SunnyRed:它们对警报的影响与对define的影响一样大。只是它是“优先括号”,而不是“函数调用括号”。如果函数和左括号之间没有空格,那么它将被解释为函数调用语法的一部分。我知道这不是什么问题,但是编译的js不同,在“advanced”case.Thx中有额外的括号。其实这就是我要找的。我只是好奇,是否可以将匿名函数包装为一个简单的参数。Thx用于更新+附加信息。总而言之,在类似上面括号的情况下,括号确实会对最终输出产生影响:
define((函数(require){return'bye';})。而对于一个简单的参数——比如警报中的参数——它们没有?@SunnyRed:它们对警报的影响与对define的影响一样大。只是它是“优先括号”,而不是“函数调用括号”。如果函数和左括号之间没有空格,那么它将被解释为函数调用语法的一部分。我知道这不是什么问题,但是编译后的js是不同的,在“advanced”一词中有额外的括号。