这段代码
nums = [1..10].map (i) -> i*2
Run Code Online (Sandbox Code Playgroud)
运行
而这一点
nums = [1..10].map(i) -> i*2
Run Code Online (Sandbox Code Playgroud)
被打破
原因是函数调用(调用)的括号是可选的.我发现这在我自己的代码中始终存在混淆,并且总体上包含括号的一般策略以使其清楚.
在咖啡脚本中,如果省略括号,则假定参数列表到达行尾.您的第一个示例咖啡脚本实际上与此相同:
nums = [1..10].map((i) -> i*2)
Run Code Online (Sandbox Code Playgroud)
其中map的调用的第一个参数是一个函数 (i)->i*2
如果你删除地图和(i)之间的空格,那么咖啡脚本意味着围绕其余部分的括号.你的第二个示例咖啡脚本实际上与此相同:
nums = [1..10].map(i)(-> i*2)
Run Code Online (Sandbox Code Playgroud)
在这里,您可以看到正在调用map i作为唯一参数,然后coffee脚本期望map(i)调用返回一个函数,然后该函数被称为传递->i*2或更明确地()->i*2作为参数.
鉴于咖啡脚本旨在消除javascript的潜在编码危害,我认为如果他们没有包含这个隐含的括号,它会更安全.
| 归档时间: |
|
| 查看次数: |
340 次 |
| 最近记录: |