标准函数定义的结构如下:
name = (arg, ...) ->
body
times
所以关于你的定义没什么好说的。因此,让我们看看您的电话times
:
times 5, (index) ->
console.log index
这部分:
(index) ->
console.log index
只是另一个函数定义,但这个是匿名的。我们可以使用命名函数重写您的调用以帮助澄清事情:
f = (index) -> console.log index
times 5, f
我们可以填写可选的括号来真正拼写出来:
f = (index) -> console.log(index)
times(5, f)
一旦所有的东西都被分解了,你应该看到5
and (index)
in:
times 5, (index) ->
console.log index
彼此无关,因此将它们分组在括号中:
times (5, (index)) ->
console.log index
没有意义。如果您想在该times
调用中添加括号以阐明结构(这在回调函数较长时非常有用),您需要知道两件事:
- 函数名称和参数周围的左括号之间没有空格。如果有空格,CoffeeScript 会认为您正在使用括号对参数列表中的内容进行分组。
- 括号需要包围整个参数列表,其中包括回调函数的主体。
给它,你会写:
times(5, (index) ->
console.log index
)
也许:
times(5, (index) -> console.log(index))
Withconsole.log
是一个非本地函数,您甚至可以:
times(5, console.log)
但这会给你TypeError
一些浏览器,所以不要走那么远。