首頁  >  文章  >  web前端  >  面試常問之JavaScript變數提升

面試常問之JavaScript變數提升

青灯夜游
青灯夜游轉載
2019-11-28 17:14:022227瀏覽

什麼是JavaScript變數提升?這是面試常會被問到的。以下這篇文章就來跟大家介紹一下JavaScript變數提升,有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

面試常問之JavaScript變數提升

JavaScript變數提升

#(Hoisting)JavaScript將宣告移動到頂部的預設行為。 【相關課程推薦:JavaScript影片教學

JavaScript宣告提升,在JavaScript中,變數可以在使用後宣告。換一種說法; 變數可以在宣告之前使用。範例1給出與範例2相同的結果:

範例1:

<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>js</title>
<body>
<p id="demo"></p>
<script>
    x = 5; // 给x赋值5
    elem = document.getElementById("demo"); // 查找一个元素
    elem.innerHTML = x;           // 在元素内显示x
    var x; // 声明 x
</script>
</body>
</html>

範例2:

!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>js</title>
<body>
<p id="demo"></p>
<script>
    var x; // 声明 x
    x = 5; // 把5赋值给x
    elem = document.getElementById("demo");
    elem.innerHTML = x;
</script>
</body>
</html>

要理解這一點,您必須理解「宣告提升(英文:Hoisting)”一詞。是指JavaScript將所有宣告移到目前範圍頂部(到目前腳本或目前函數的頂部)的預設行為。

但在ES6 中改變了這個預設的行為,ES6的let宣告的變數和const宣告常數不會被提升!

JavaScript初始化不會提升

JavaScript只會提升聲明,而不是初始化。範例1和範例2是不同的結果:

範例1:

<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>js</title>
<body>
<p id="demo"></p>
<script>
    var x = 5; // 初始化 x
    var y = 7; // 初始化 y
    elem = document.getElementById("demo"); // 查找一个元素
    elem.innerHTML = x + " " + y;       // 显示x和y
</script>
</body>
</html>

範例2:

<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>js</title>
<body>
<p id="demo"></p>
<script>
    var x = 5; // 初始化 x
    elem = document.getElementById("demo"); // 查找一个元素
    elem.innerHTML = x + " " + y;       // 显示x和y
    var y = 7; // 初始化 y
</script>
</body>
</html>

##在頂部宣告你的變數!

對許多開發人員來說,變數提升(Hoisting)是一種未知或被忽略的JavaScript行為。如果開發人員不理解提升,程式可能包含錯誤(Error)。為避免錯誤,請始終在每個範圍的開頭聲明所有變數。由於這是JavaScript解釋程式碼的方式,因此它總是一個很好的規則。

本文來自 

js教學 欄目,歡迎學習!

以上是面試常問之JavaScript變數提升的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除