Я недавно заметил, что много файлов JavaScript в сети запускается с a ;
сразу после раздела комментария.
Например, этот код плагина jQuery запускается с:
/**
* jQuery.ScrollTo
* Copyright (c) 2007-2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
* Dual licensed under MIT and GPL.
* Date: 9/11/2008
.... skipping several lines for brevity...
*
* @desc Scroll on both axes, to different values
* @example $('div').scrollTo( { top: 300, left:'+=200' }, { axis:'xy', offset:-20 } );
*/
;(function( $ ){
Почему файл должен запуститься с a ;
? Я вижу эту конвенцию в серверной стороне файлы JavaScript также.
Каковы преимущества и недостатки выполнения этого?
Я бы сказал, поскольку скрипты часто объединяются и уменьшаются / сжимаются / отправляются вместе, есть шанс, что у последнего парня было что-то вроде:
return {
'var':'value'
}
в конце последний сценарий без ;
в конце. Если у вас в начале есть ;
, это безопасно, например:
return {
'var':'value'
}
;(function( $ ){ //Safe (still, screw you, last guy!)
return {
'var':'value'
}
(function( $ ){ //Oh crap, closure open, kaboom!
return {
'var':'value'
};
;(function( $ ){ //Extra ;, still safe, no harm
Я считаю (хотя я не уверен, поэтому, пожалуйста, не набрасывайтесь на меня), что это обеспечит закрытие любого предыдущего заявления из другого файла. В худшем случае это будет пустой оператор, но в лучшем случае можно избежать попытки отследить ошибку в этом файле, когда незаконченный оператор действительно поступил сверху.