首頁 > web前端 > js教程 > 主體

面試常問之JavaScript變數提升

青灯夜游
發布: 2019-11-28 17:14:02
轉載
2292 人瀏覽過

什麼是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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板