当我在括号前加空格调用函数时,会出现错误提示,显示“unexpected ,”。
sum = (a, b) ->
a+b
console.log (sum (1, 2))
错误:意外的 ,
console.log(sum(1,2))
这里指的是1和2之间的逗号
为什么会出现奇怪的行为呢?
sum = (a, b) ->
a+b
console.log (sum (1, 2))
错误:意外的 ,
console.log(sum(1,2))
这里指的是1和2之间的逗号
为什么会出现奇怪的行为呢?
foo(bar) # with parens
foo bar # without parens
由于在sum
和(1, 2)
之间有一个空格,所以你正在进行一个非括号函数调用,将(1, 2)
作为第一个参数传递给sum
,相当于这个:
bar = (1, 2)
sum bar
(1, 2)
不是一个有效的 CoffeeScript 表达式。要传递两个参数,必须使用以下任一方式之一:sum(1, 2)
sum 1, 2
括号在CoffeeScript中有多种用途,这里涉及到的用途是:
函数调用时的括号通常是可选的,因此你可以这样写:
console.log 6, 11
一切都很好。当分组括号和函数调用括号存在歧义时,问题就会出现。考虑以下情况:
f = (n) -> 2*n
f (1 + 2) + 3
x = (1 + 2) + 3 # 6
f x # 12
x = 1 + 2 # 3
y = f x # 6
y + 3 # 9
f (1 + 2) + 3
如果使用CoffeeScript,括号用于分组,而且在填充可选的括号时,函数调用看起来像这样:
x = (1 + 2) + 3
f(x)
x = (1 + 2)
f(x) + 3
console.log (sum (1, 2))
< p > log
和 sum
后面的空格表示括号用于分组,(1, 2)
不是有效的 CoffeeScript 表达式。
经验法则:如果您想要(或需要)使用括号来表示函数调用,则不要在函数名称和开括号之间放置任何空格。