CoffeeScript函数调用 - 参数和括号

时间:2011-07-05 18:09:03

标签: javascript coffeescript

存在这样的Javascript代码:

var re = /some_regex/g;
return re.exec(link.attr('href'))[0]

如何在CoffeeScript中调用它 在CoffeeScript中,参数括号中不需要参数,但在参数中还有另一个函数调用。

我试过了:

re = /some_regex/g
re.exec link.attr 'href' [0]   # compile error: unexpected [
re.exec (link.attr 'href')[0]  # javascript: re.exec((link.attr('href'))[0]);
re.exec (link.attr('href'))[0] # javascript: re.exec((link.attr('href'))[0]);

怎么做?或者我应该

// adding new variable
temp = re.exec link.attr 'href'
temp[0]

2 个答案:

答案 0 :(得分:3)

re.exec之后的空格导致问题,因为它导致CoffeeScript编译器认为(link.attr('href'))[0]是参数。

执行此操作的正确方法是完全像在JavaScript中一样,没有空格:

re.exec(link.attr('href'))[0]

如果你真的非常想在这一行上使用no-parens语法,那么这也可行:

re.exec(link.attr 'href')[0]

(他们编译成相同的结果)

答案 1 :(得分:1)

如果您简单地将绝对需要它的部分括起来,并且以类似CoffeeScript的方式完成其余部分,那么这不会更清楚吗?

(re.exec link.attr 'href')[0]

或者甚至(如果'href'只是另一个属性):

(re.exec link.attr.href)[0]

或者,更好的是,更清楚,按照你最初的建议:

matches = re.exec link.attr.href
matches[0] // idiomatic to re.exec: first element is matched RE