CoffeeScript函数调用-参数和括号

CoffeeScript function call - parameters and brackets

本文关键字:参数 函数调用 CoffeeScript      更新时间:2023-09-26

存在这样的Javascript代码:

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

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

我试过:

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]

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

正确的做法是完全像JavaScript一样,没有空格:

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

如果你真的很想在这一行使用no- parent语法,也可以这样做:

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

(它们编译得到相同的结果)

如果您简单地将绝对需要它的部分括起来,并以最类似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