Что делает ведущая точка с запятой в библиотеках JavaScript?
В нескольких библиотеках JavaScript я видел эту запись в самом начале:
/**
* Library XYZ
*/
;(function () {
// ... and so on
Хотя мне вполне комфортно с синтаксисом "немедленно выполняемая функция"
(function(){...})()
Мне было интересно, для чего используется главная точка с запятой. Все, что я мог придумать, это то, что это страховка. То есть, если библиотека встраивается в другой, глючный код, она служит в качестве "скачка скорости" "последнее утверждение заканчивается здесь в самый последний".
Есть ли у него другие функциональные возможности?
5 ответов
Он позволяет безопасно объединять несколько файлов JS в один, чтобы он быстрее обслуживался как один HTTP-запрос.
На самом деле лучший ответ был дан в вопросе, поэтому я просто напишу это здесь для ясности:
Ведущий ;
перед выражениями функций, вызываемыми немедленно, чтобы предотвратить ошибки при добавлении файла во время конкатенации к файлу, содержащему выражение, неправильно завершенное с помощью ;
,
Рекомендуется заключать выражения в точки с запятой, а также использовать начальную точку с запятой в качестве гарантии.
В общем случае, если оператор начинается с (, [, /, + или -, есть вероятность, что его можно интерпретировать как продолжение предыдущего оператора. Утверждения, начинающиеся с /, + и -, довольно редки на практике, но операторы, начинающиеся с (и [, не являются чем-то необычным, по крайней мере, в некоторых стилях программирования JavaScript. Некоторые программисты любят ставить защитную точку с запятой в начале любого такого оператора, чтобы он продолжал работать правильно, даже если оператор перед его изменением и удалением завершающей точки с запятой:
var x = 0 // Semicolon omitted here
;[x,x+1,x+2].forEach(console.log) // Defensive ; keeps this statement separate
Источник:
Это называется ведущей точкой с запятой.
Его основная цель - защитить себя от неправильного закрытия предыдущего кода, что может вызвать проблемы. Точка с запятой предотвратит это. Если предыдущий код был неправильно закрыт, наша точка с запятой исправит это. Если он был правильно закрыт, то наша точка с запятой будет безвредной и не будет никаких побочных эффектов.
Это хорошо, когда вы минимизируете JS коды. Предотвратить неожиданные синтаксические ошибки.