Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.01.2019, 02:49
Кандидат Javascript-наук
Отправить личное сообщение для Начинающий-Js-кодер Посмотреть профиль Найти все сообщения от Начинающий-Js-кодер
 
Регистрация: 12.06.2016
Сообщений: 130

Зачем такая синтаксическая конструкция?
Часто вижу в коде делают так:
;(function() {
	'use strict';
 
})();

Зачем перед анонимной функцией ставят ; ? нигде в книгах об этом не нашел.
Ответить с цитированием
  #2 (permalink)  
Старый 05.01.2019, 09:02
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

чтобы не засорять глобальное пространство
Ответить с цитированием
  #3 (permalink)  
Старый 05.01.2019, 10:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

Сообщение от Начинающий-Js-кодер
Зачем перед анонимной функцией ставят ;
защита от ... , чтобы не сломать другой код.
Ответить с цитированием
  #4 (permalink)  
Старый 05.01.2019, 12:31
Кандидат Javascript-наук
Отправить личное сообщение для Начинающий-Js-кодер Посмотреть профиль Найти все сообщения от Начинающий-Js-кодер
 
Регистрация: 12.06.2016
Сообщений: 130

Сообщение от j0hnik Посмотреть сообщение
чтобы не засорять глобальное пространство
Я не о анонимной функции.

А если в другом коде в конце будет ; в конце код будет сломан или как?
Ответить с цитированием
  #5 (permalink)  
Старый 05.01.2019, 12:42
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

var a = 2 + 5
alert(a)


прошедший обфускацию

var a=2+5alert(a)


Если "сливать" в один несколько js файлов сжатых, то могут возникать подобные ошибки, поэтому и предваряют их ;
Ответить с цитированием
  #6 (permalink)  
Старый 05.01.2019, 12:46
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

Начинающий-Js-кодер, гипотетически этот код может быть склеен с другим в один файл. Опять же гипотетически в том файле в последней строчке может не стоять ";". Тогда скобки могут бы интерпретированы как вызов функции:
var getBindedAlert = function(msg){
 return alert.bind(window, 'Внезапно: ' + msg);
}

(function() {
	'use strict';
 
})();
var getBindedAlert = function(msg){
 return alert.bind(window, 'Внезапно: ' + msg);
}

;(function() {
	'use strict';
 
})();


...upd: laimas, обфускаторы обычно как раз нормально разруливают такое.
__________________
29375, 35

Последний раз редактировалось Aetae, 05.01.2019 в 12:50.
Ответить с цитированием
  #7 (permalink)  
Старый 05.01.2019, 13:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Aetae
обфускаторы обычно как раз нормально разруливают такое
Ага, если бы все Не так давно столкнулся с подобным, когда рабочий код не работал на сайте, а там свой сборщик, пришлось разбираться в строке, что он не так делает.
Ответить с цитированием
  #8 (permalink)  
Старый 05.01.2019, 15:58
Кандидат Javascript-наук
Отправить личное сообщение для Начинающий-Js-кодер Посмотреть профиль Найти все сообщения от Начинающий-Js-кодер
 
Регистрация: 12.06.2016
Сообщений: 130

Понял. Спасибо всем.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Зачем мне нужны аргументы функции? Chamus Javascript под браузер 3 12.05.2014 09:07
Зачем у NodeList и HTMLCollection свойство length enumerable? danik.js Общие вопросы Javascript 5 27.03.2013 11:02
Зачем нужна session_ destroy() ? jsuse Серверные языки и технологии 2 03.03.2012 08:19
Зачем нужен JAVA mycoding Оффтопик 32 23.02.2011 00:33
Что за конструкция? (из jQuery) Yojik Общие вопросы Javascript 6 22.08.2010 15:46