Что делает ведущая точка с запятой в библиотеках JavaScript?

В нескольких библиотеках JavaScript я видел эту нотацию в самом начале:

/**
 * Library XYZ
 */
;(function () {
  // ... and so on

В то время как мне совершенно комфортно синтаксис "немедленно выполненная функция"

(function(){...})()

Мне было интересно, для чего предназначена точка с запятой. Все, что я мог придумать, это страхование. То есть, если библиотека встроена в другой, багги-код, она служит как "последний оператор заканчивается здесь на последнем" типе скорости.

Есть ли у него какие-либо другие функции?

Ответы

Ответ 1

Это позволяет безопасно объединить несколько файлов JS в один, чтобы быстрее обслуживать его как один HTTP-запрос.

Ответ 2

Лучший ответ был дан в вопросе, поэтому я просто напишу это для ясности:

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

Лучшей практикой является прервать ваши выражения точкой с запятой, но также использовать ключевую точку с запятой как гарантию.

Ответ 3

В общем случае, если инструкция начинается с (, [,/, +, или -, есть вероятность, что это может быть     интерпретируется как продолжение заявления ранее. Заявления, начинающиеся с /, +,     и - довольно редки на практике, но утверждения, начинающиеся с (и [не являются необычными     вообще, по крайней мере в некоторых стилях программирования JavaScript. Некоторым программистам нравится     поставить оборонительную точку с запятой в начале любого такого заявления, чтобы она     продолжать работать корректно, даже если выражение до его изменения и ранее     конечная точка с запятой удалена:

var x = 0 // Semicolon omitted here
;[x,x+1,x+2].forEach(console.log) // Defensive ; keeps this statement separate

Источник:

Javascript Окончательное руководство 6-е издание

Ответ 4

Это называется ведущей точкой с запятой.

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

Ответ 5

Хорошо, когда вы меняете js-коды. Предотвратите непредвиденные ошибки синтаксиса.