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