另一種易犯的錯誤,便是帶著其他編程語言的思維,認為在JS中,也存在生命周期這么一說。請看下面的代碼:
~~~
for (var i = 0; i < 10; i++) { /* ... */ } console.log(i);
~~~
如果你認為在運行console.log() 時肯定會報出 undefined 錯誤,那么你就大錯特錯了。我會告訴你其實它會返回 10嗎。
當然,在許多其他語言當中,遇到這樣的代碼,肯定會報錯。因為i明顯已經超越了它的生命周期。在for中定義的變量在循環結束后,它的生命也就結束了。但是在js中,i的生命還會繼續。這種現象叫做 variable hoisting。
而如果我們想要實現和其他語言一樣的在特定邏輯模塊中具有生命周期的變量,可以用let關鍵字。