2016-02-03 4 views
2

Я занимаюсь учебным пособием по intel xdk и разбору, и один из исходных файлов имеет этот синтаксис, который я никогда не видел. Сам файл открывается функцией, которая не только не имеет имени, но и объявляется в обычных круглых скобках. Может кто-нибудь объяснить и/или ссылку на какой-либо онлайн-ресурс, который объясняет это?что это за синтаксис открытия Javascript?

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

Я думаю, что это должно быть '()' на конце, потому что тогда это будет [IIFE] (https://en.wikipedia.org/wiki/Immediately-invoked_function_expression). –

+0

В этой статье [http://javascriptissexy.com/understand-javascript-closures-with-ease/] вы найдете больше информации и другие способы использования этого синтаксиса – dexhering

+0

Прямо сейчас это просто функция внутри круглых скобок, t быть вызванным, и мало смысла. Как отметил Майк, в конце концов вы, вероятно, не встретите пару круглых скобок. – adeneo

ответ

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, вы увидите, как это аналогично используется для создания «частных» переменных.

Смежные вопросы