Ostatnio zauważyłem, że wiele plików JavaScript w Internecie zaczyna się ;
od natychmiastowego śledzenia sekcji komentarzy.
Na przykład kod tej wtyczki jQuery zaczyna się od:
/**
* 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( $ ){
Dlaczego plik musi zaczynać się od ;
? Widzę tę konwencję także w plikach JavaScript po stronie serwera.
Jakie są zalety i wady robienia tego?
return
oświadczenia jako ostatniej rzeczy w skrypcie, prawda? Powrót na najwyższy poziom nie ma sensu. To musiałoby być coś innego, prawda?return
rachunku nie zostanie wykonany, a więc nie ma sensu do łączenia. Przynajmniej}
brakuje.Wierzę (choć nie jestem pewien, więc proszę nie rzucaj się na mnie), że zapewni to zamknięcie wcześniejszych oświadczeń z innego pliku. W najgorszym przypadku byłaby to pusta instrukcja, ale w najlepszym przypadku mogłaby uniknąć próby wyśledzenia błędu w tym pliku, gdy niedokończona instrukcja faktycznie pochodzi z góry.
źródło
Rozważ ten przykład:
Stanie się tak, że zostanie to ocenione w następujący sposób:
To, co kiedykolwiek
a
powróci, będzie traktowane jako funkcja, którą próbujemy zainicjować.Ma to głównie na celu zapobieganie błędom podczas łączenia wielu plików w jeden plik:
a.js
b.js
Jeśli połączymy te pliki razem, spowoduje to problemy.
Dlatego pamiętaj, aby umieścić swoje
;
przed,(
a może także kilka innych miejsc. Btw.var a = 1;;;var b = 2;;;;;;;;;var c = a+b;
jest całkowicie poprawnym JavaScriptźródło