Подтвердить что ты не робот

Зачем встраивать javascript файл в функцию?

Я играл с Node.js после того, как долгое время не использовал JavaScript.

Одна вещь, которую я заметил, состоит в том, что многие примеры файлов, на которые я смотрел, используют следующее соглашение:

(function() {
... all javascript code for the file ...
})();

Есть ли причина заключать JavaScript в файл в подобную функцию или это просто соглашение? Это то, что я должен подражать?

Я должен также отметить, что, по крайней мере, в файлах, с которыми я играл, код работает одинаково с или без функции, окружающей все.

Спасибо за ваши идеи!

4b9b3361

Ответ 1

Переменные в Javascript имеют область действия. Вы завершаете свой код в функции, чтобы он не перекрывал глобальное пространство имен с множеством переменных, что впоследствии может привести к ошибкам при добавлении другого кода. Например:.

// module 1
(function () {
    var foo = 'bar';
    ...
})();

// module 2
(function () {
    var foo = 'baz';
    ...
})();

Нет проблем, поскольку оба модуля имеют свои собственные области видимости.

Ответ 2

Может быть, лучше отнести вас к некоторым хорошим ресурсам.

связанная тема в stackoverflow

Каковы преимущества закрытия и когда они обычно используются?

объяснение некоторых деталей

http://robertnyman.com/2008/10/09/explaining-javascript-scope-and-closures/

или больше:

результат поиска из stackoverflow

https://stackoverflow.com/search?q=javascript+closure

Ответ 3

недавно был дан ответ на то же самое. Это анонимная функция, которая будет выполнять ее тело.

Итак, когда файл, содержащий этот код, загружает всю логику внутри этой функции, сам выполняется.


(function() {
alert('hi');
})();

попробуйте написать это и выполнить. Кроме того, вы можете иметь переменные внутри области действия этой функции, чтобы они не мешали глобальной области и не приводили к ошибкам при использовании с другими библиотеками javascript.

Ответ 4

Он создает область видимости, поэтому он полезен для скрытия информации и не загрязняет глобальный объект.