我目前正在阅读一本关于AngularJS的书,我对我不理解的javascript语法有疑问。
var element = $compile('<button></button>')($rootScope);
为什么一个人可以调用带有两个括号对的函数?
('<button></button>')
($rootScope)
任何人都可以建议这个js构造吗?
答案 0 :(得分:4)
它不是一个特殊的构造,它只是一个返回函数的函数。
function a () {
return function () {
console.log("hello");
};
}
a()();
AngularJS $compile
接受一些HTML字符串并返回一个模板函数,而该函数又可以被调用。
你的代码片段用两行写成,如下所示:
var template = $compile('<button></button>');
var element = template($rootScope);
答案 1 :(得分:2)
$compile('<button></button>')
返回一个由第二组括号立即执行的函数。
答案 2 :(得分:1)
$compile('<button></button>')
调用一个函数。它返回一些东西。 ($rootScope)
应用于返回值(可能是另一个函数)。
举个简单的例子:
function one() {
return two;
}
function two() {
alert("Hello");
}
one()();