官术网_书友最值得收藏!

2.1.6 變量提升

在JavaScript里,用var關鍵字聲明的變量的聲明語句都會被默認放在其作用域的最頂部,即使其聲明語句在函數的最底部,它也會優先于其他類型的語句執行。因此在代碼中是可以先使用變量,然后再去定義變量的,例如:

這段代碼可以正常輸出a的值,輸出如圖2.9所示。

圖2.9 樣例輸出2.9

雖然變量定義可以提前,但是其賦值語句是不能提前的,因此遇到提前定義變量的情況,在調用該變量前一定要先給其賦值,否則變量的類型就會變為undefined,例如:

這段代碼輸出的a是“undefined”,輸出如圖2.10所示。

圖2.10 樣例輸出2.10

雖然JavaScript支持變量提升,但是還是建議在其作用域頂部聲明變量,這樣會避免出現以上問題,而且代碼的可讀性也比較好,便于維護。

我們在2.1.4節中提到過,使用let關鍵字聲明的變量是不存在變量提升現象的,因此使用let聲明變量的語句位置不會變動。對于JavaScript初學者,建議盡量使用let關鍵字來聲明變量,因為它更加嚴謹,可以避免許多問題。但因為兩個關鍵字總體上是大同小異的,讀者可以根據自身喜好進行選擇。

主站蜘蛛池模板: 普兰店市| 渭南市| 澄城县| 永清县| 安岳县| 安阳市| 鄂尔多斯市| 称多县| 肇源县| 迁安市| 晴隆县| 伊吾县| 格尔木市| 葫芦岛市| 浦县| 卢龙县| 桐城市| 宁强县| 碌曲县| 贵港市| 比如县| 兴城市| 温泉县| 沂源县| 宝清县| 怀远县| 苏州市| 天峻县| 胶州市| 平原县| 闸北区| 宁强县| 桓仁| 盐津县| 金平| 乳山市| 昆山市| 翁牛特旗| 沾化县| 太仓市| 崇阳县|