在JavaScript中,hoisting是一個容易犯錯的地方。
在一段scope裡面,沒有定義變量就使用變量的話會彈出Reference Error。12 // ReferenceError: poi is not definedconsole.log(poi);
|
|
由於JavaScript的解釋器會提前把所有變量函數定義,所以上面這一段代碼會變成這一段:123console.log(name); // undefinedvar name = 'calpa';console.log(name); // calpa
另外,JavaScript也會出現這樣的問題。。。12345678var name = 'calpa';(function () { // My name is undefined console.log("My name is " + name); var name = 'poi'; // My name is poi console.log("My name is " + name); // poi})();
簡單來說,在寫JavaScript時,我們應該提前在檔案開始位置定義變量。
參考資料: