Это вызываемая анонимная функция.
Цель этого - создать новую область видимости, из которой локальные переменные не будут выбрасываться. Например:
var test = 1;
(function() {
var test = 2;
})();
test == 1 // true
Одно важное замечание об этом синтаксисе состоит в том, что вы должны привыкнуть завершать операторы точкой с запятой, если вы этого еще не сделали. Это связано с тем, что Javascript разрешает перевод строки между именем функции и ее круглыми скобками при вызове.
Фрагмент ниже приведет к ошибке:
var aVariable = 1
var myVariable = aVariable
(function() {/*...*/})()
Вот что он на самом деле делает:
var aVariable = 1;
var myVariable = aVariable(function() {/*...*/})
myVariable();
Другой способ создания новой области видимости блока - использовать следующий синтаксис:
new function() {/*...*/}
Разница в том, что первый метод не влияет на то, на что указывает ключевое слово "this", а второй - на
.
В Javascript 1.8 также есть оператор let, который выполняет то же самое, но, разумеется, он не поддерживается большинством браузеров.