什么是这个Javascript开放语法?

时间:2016-02-03 01:07:51

标签: javascript parse-platform intel-xdk

我正在做关于intel xdk和parse的tuts教程,其中一个源文件具有我从未见过的语法。文件本身打开的函数不仅没有名称,而且在常规括号内声明。 有人可以解释和/或链接到一些解释这个的在线资源吗?

(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;
})

1 个答案:

答案 0 :(得分:4)

许多人指出你的代码片段最有可能在最后遗漏了一对()。使用(),它变成了IIFE,迈克指出的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);

上面的代码创建了一个“导出”对象并将其返回。如果您阅读Wiki中的“建立私有变量和访问者”部分,您将看到它是如何被类似地用于很好地创建“私有”变量。