在之前的es5中聲明變量只有兩種方式,var和function分別是聲明普通變量和聲明方法變量,es6中添加了我們常見的let和const命令外,import和class也屬于聲明變量的范疇,所以至此es6中一共有6種聲明變量的方法,下面逐步探討下es6變量在各個位置的不同點。
Let命令與var命令類似,但是let所聲明的變量只在命令所在的代碼塊中有效。例如for循環(huán)的計數(shù)器就適合用let來聲明,首先在for循環(huán)結束后變量也自動回收,且用var的話聲明的計數(shù)器最終都會指向最后一個計數(shù)器,而let是每一輪變量都是重新生成的,JavaScript引擎內部會記住上一輪循環(huán)的值,初始化本輪的變量時是在上一輪循環(huán)的基礎上計算的,所以每次輸出的都是不同的內容。在同一作用域中var可以重復聲明變量而let的話則會直接拋異常。
變量提升和死區(qū)
Var命令會發(fā)生變量提升的現(xiàn)象let則不存在,變量提升現(xiàn)象指的是在變量聲明前使用此變量var會輸出undefined,而let則會直接拋ReferenceError異常,Es6中規(guī)定了,如果塊中存在let和const,那么這個塊存根一開始就會形成封閉作用域,只要在聲明這些變量之前使用了這些變量就會報錯,也稱為變量的暫時性死區(qū)。
上一篇: VueX與本地存儲
下一篇: 什么是es6——變量2