首頁 >web前端 >js教程 >js的變數提升是什麼意思? js變數提升使用介紹(實例)

js的變數提升是什麼意思? js變數提升使用介紹(實例)

不言
不言原創
2018-09-15 16:27:105400瀏覽

本篇文章帶給大家的內容是關於js的變數提升是什麼意思? js變數提升使用介紹(實例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

介紹

變數提升Hoisting是人們對JavaScript執行上下文運作方式的一種認識,並不是官方給出的改變

#從字面上理解,變數提升的意思是變數和函數的宣告會在物理層移動到作用域的最前面。但這樣理解並不準確,效果是相同的,但是實際的實作方式是JavaScript的變數和函數的宣告會在編譯階段放入記憶體

這表示使用者在正式宣告一個函數或變數之前就能夠使用它

函數的提升

JavaScript中,在宣告一個函數前,我們就能夠使用它,大家應該都體驗過,像這樣:

test();

function test() {
    // do something
}

在正常的使用情況下,應該需要先聲明函數才能調用,但是這種方法仍然能夠運行,這是因為JavaScript自動將函數聲明事先存入了內存的原因,看起來就像JavaScript自動把函數宣告提升到了最前面

變數的提升

#對於變量,JavaScript使用類似的方法,但要注意一點的是,對於變數的提升,JavaScript只會將變數宣告提升,但是不會把初始化提升,如果在變數初始化之前使用,則會得到undefined

// undefined
console.log(a);
// ReferenceError: b is not defined
console.log(b);
var a = 10;
// undefined
console.log(num);
num = 6;
// 6
console.log(num);
num += 7;
// 13
console.log(num);
var num;
// undefined
console.log(num);
num = 1;
// 1
console.log(num);
var num = 2;
// 2
console.log(num);

這裡要注意,JavaScript變數提升是針對var的,而letconst不存在變數提升這一特性

// ReferenceError: a is not defined
console.log(a);
let a = 10;

一個複雜一點的例子

var a = 100;
function fn() {
    // undefined
    console.log(a);
    var a = 200;
    // 200
    console.log(a);
}
fn();
// 100
console.log(a);
var a;
// 100
console.log(a);
// 300
var a = 300;
console.log(a);

相關推薦:

#js變數提升詳解

# #JS中作用域與變數提升(hoisting)的深入理解

以上是js的變數提升是什麼意思? js變數提升使用介紹(實例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn