當前位置:
首頁 > 知識 > JavaScript 變數提升

JavaScript 變數提升

JavaScript 中,函數及變數的聲明都將被提升到函數的最頂部。

JavaScript 中,變數可以在使用後聲明,也就是變數可以先使用再聲明。

JavaScript 變數提升

以下兩個實例將獲得相同的結果:

實例 1

x = 5; // 變數 x 設置為 5

elem = document.getElementById("demo"); // 查找元素

elem.innerHTML = x; // 在元素中顯示 x

var x; // 聲明 x

JavaScript 變數提升

實例 2

var x; // 聲明 x

x = 5; // 變數 x 設置為 5

elem = document.getElementById("demo"); // 查找元素

elem.innerHTML = x; // 在元素中顯示 x

要理解以上實例就需要理解 "hoisting(變數提升)"。

變數提升:函數聲明和變數聲明總是會被解釋器悄悄地被"提升"到方法體的最頂部。


JavaScript 初始化不會提升

JavaScript 只有聲明的變數會提升,初始化的不會。

以下兩個實例結果結果不相同:

實例 1

var x = 5; // 初始化 x

var y = 7; // 初始化 y

elem = document.getElementById("demo"); // 查找元素

elem.innerHTML = x + " " + y; // 顯示 x 和 y

嘗試一下 ?

實例 2

var x = 5; // 初始化 x

elem = document.getElementById("demo"); // 查找元素

elem.innerHTML = x + " " + y; // 顯示 x 和 y

var y = 7; // 初始化 y

JavaScript 變數提升

實例 2 的 y 輸出了 undefined,這是因為變數聲明 (var y) 提升了,但是初始化(y = 7) 並不會提升,所以 y 變數是一個未定義的變數。

實例 2 類似以下代碼:

var x = 5; // 初始化 x


在頭部聲明你的變數

對於大多數程序員來說並不知道 JavaScript 變數提升。

如果程序員不能很好的理解變數提升,他們寫的程序就容易出現一些問題。

為了避免這些問題,通常我們在每個作用域開始前聲明這些變數,這也是正常的 JavaScript 解析步驟,易於我們理解。

JavaScript 嚴格模式(strict mode)不允許使用未聲明的變數。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

JavaScript for 循環
JavaScript while 循環
JavaScript switch 語句
JavaScript 作用域

TAG:程序員小新人學習 |

您可能感興趣

VBScript 變數
Flipkart-Walmart交易:軟銀最終會有變數嗎
Python和Scala的定義變數
linux-shell編程中awk變數的使用
python基礎之變數類型number(math模塊)
「Python」Chapter1 變數和簡單數據類型
Shell 變數
微軟摺疊屏專利現身,Surface Phone或有變數
Perl 變數
關於如何使用webpack命令行傳入變數,並通過process.env來調用
static 成員變數、static 成員函數、類/對象的大小
全新斯巴魯Levorg問世有變數 EyeSight成拖累主因
The Daily Beast:美朝峰會出現變數,特朗普怪罪中國
非靜態內部類中 static/final 成員變數相關的一道趣題
「學習筆記」Python dir()函數和 __doc__ 變數的使用
Perl 特殊變數
TensorFlow中常量與變數的基本操作演示
Linux 設置環境變數和Mongodb設置賬號密碼
Nginx 日誌和變數
python基礎之變數與運算符