存在这样的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]
答案 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