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