妳好,JS中的分號表示語句的結束,但是在JS中,分號不是必須的。
由於分號不是必須的,所以在做代碼壓縮的時候,經常會因為缺少分號導致代碼報錯,所以建議開發人員在寫JS代碼的時候都嚴格養成使用分號結束語句的習慣。壹些簡單的例子:
var?str?=?'I?am?a?string';var?oArr?=?[];
oArr.push(str);
另外,我們在看別人源代碼的時候可能經常會發現下面這種寫法:
;(function(){//?壹大堆代碼
})();
分號出現在了所有代碼的最前面,這並不是JS代碼的什麽特殊用法,這只是為了避免多文件合並時,某些文件結尾沒有分號,導致代碼錯誤,例如我們有兩個JS文件,內容分別是:
(function(){function?JsClassA(){}
window.JsClassA?=?JsClassA;
})()(function(){
function?JsClassB(){}
window.JsClassB?=?JsClassB;
})();
這時候如果直接合並兩個文件,我們將會得到下面這段代碼:
(function(){function?JsClassA(){}
window.JsClassA?=?JsClassA;
})()(function(){
function?JsClassB(){}
window.JsClassB?=?JsClassB;
})();
這個時候我們如果執行這段代碼就會得到壹個 'TypeError: undefined is not a function' 的錯誤。而如果我們在每個文件的開頭加壹個分號,我們得到的是:
;(function(){function?JsClassA(){}
window.JsClassA?=?JsClassA;
})();(function(){
function?JsClassB(){}
window.JsClassB?=?JsClassB;
})();
這時再執行該段代碼,運行壹切正常。
希望能幫到妳,如有疑問歡迎追問,望采納~~~