我如何解释此代码:
var element = $compile('<p>{{total}}</p>')(scope);
取自https://docs.angularjs.org/api/ng/service/$compile
这是我第一次看到类似的内容:
var x = someFunction(abc)(d);
我不知道Javascript中彼此相邻的一组大括号是什么意思。
答案 0 :(得分:5)
someFunction(abc)
返回一个函数。 (d)
立即调用返回的函数,并将参数d
传递给它。
从概念上讲,someFunction(abc)
可以定义为如下所示。这里,someFunction(abc)
返回一个接受参数(d
)的函数。它会提醒abc + d
。
function someFunction(abc) {
return function (d) {
alert(abc + d);
};
}
var adder = someFunction(10);
adder(2); // 12
adder(3); // 13
// ... or
someFunction(10)(2); // 12
someFunction(10)(3); // 13
在这里做实验; http://jsfiddle.net/756g3/
在您的特定情况下,$compile('<p>{{total}}</p>')
会返回模板函数。您立即调用该模板函数,将scope
变量传递给它。
答案 1 :(得分:1)
它只是从someFunction
调用返回的(函数)参数d答案 2 :(得分:1)
函数是一阶公民,即您可以像对待其他对象一样对待它们,将它们传递给其他函数并从其他函数返回它们。也许这会澄清?
var fn1 = function(a) {
var fn2 = function(b) {
return a+b;
};
return fn2;
};
现在
>> fn1(1)(2)
3
>> var bar = fn1(100)
>> bar(3)
103
>> bar(15)
115
fn1
接受一个参数a
并返回一个函数,它将一个传递的参数b
添加到a
。我的解释很糟糕,但我希望很清楚。
答案 3 :(得分:1)
function makeFunc() {
return function (foo) {
alert(foo);
};
}
var func = makeFunc();
func('hello');
或者,简写:
makeFunc()('hello');
$compile
返回一个函数,然后调用该函数。