Javascript 的开头语法是什么?
what is this Javascript opening syntax?
我正在做一个关于英特尔 xdk 和解析的 tuts 教程,其中一个源文件具有我从未在任何地方见过的这种语法。该文件本身打开一个函数,该函数不仅没有名称,而且在常规括号内声明。
有人可以向一些解释这个的在线资源解释 and/or link 吗?
(function (credentials) {
var exports = {};
var baseUrl = 'https://api.parse.com/1/classes/article/';
exports.articles = function (params) {
params = params || {};
var artID = '';
if (params.ID) {
artID = params.ID;
}
var url = baseUrl + artID;
return $.ajax({
url: url,
headers: {
'X-Parse-Application-Id' : credentials.apiKey,
'X-Parse-REST-API-Key' : credentials.apiSecret
}
});
};
return exports;
})
正如许多人指出的那样,您的代码片段很可能在末尾缺少一对 ()。有了(),它就变成了IIFE,Mike 指出的这个Wikipedia article 解释的很清楚。
简而言之,一旦您的程序遇到它,就会立即执行一个立即调用的函数表达式。考虑下面的简单情况:
//Your awesome js
console.log(b); // undefined
(function() {
b = "cat";
})();
console.log(b); // cat. Since in the above IIFE, we defined a global variable b.
您也可以像这样将参数传递到 IIFE 中:
(function(input) {
console.log(input); // 5
})(5);
您上面的代码创建了一个 "export" 对象并 returns 它。如果您阅读 Wiki 中的 "Establishing private variables and accessors" 部分,您将看到它如何类似地用于很好地创建 "private" 变量。
我正在做一个关于英特尔 xdk 和解析的 tuts 教程,其中一个源文件具有我从未在任何地方见过的这种语法。该文件本身打开一个函数,该函数不仅没有名称,而且在常规括号内声明。 有人可以向一些解释这个的在线资源解释 and/or link 吗?
(function (credentials) {
var exports = {};
var baseUrl = 'https://api.parse.com/1/classes/article/';
exports.articles = function (params) {
params = params || {};
var artID = '';
if (params.ID) {
artID = params.ID;
}
var url = baseUrl + artID;
return $.ajax({
url: url,
headers: {
'X-Parse-Application-Id' : credentials.apiKey,
'X-Parse-REST-API-Key' : credentials.apiSecret
}
});
};
return exports;
})
正如许多人指出的那样,您的代码片段很可能在末尾缺少一对 ()。有了(),它就变成了IIFE,Mike 指出的这个Wikipedia article 解释的很清楚。
简而言之,一旦您的程序遇到它,就会立即执行一个立即调用的函数表达式。考虑下面的简单情况:
//Your awesome js
console.log(b); // undefined
(function() {
b = "cat";
})();
console.log(b); // cat. Since in the above IIFE, we defined a global variable b.
您也可以像这样将参数传递到 IIFE 中:
(function(input) {
console.log(input); // 5
})(5);
您上面的代码创建了一个 "export" 对象并 returns 它。如果您阅读 Wiki 中的 "Establishing private variables and accessors" 部分,您将看到它如何类似地用于很好地创建 "private" 变量。