JS 變量提高與函數提高

JS 變量提高與函數提高

JS變量提高

變量提高是指:使用var聲明變量時,JS會將變量提高到所處做用域的頂部。舉個簡單的例子:javascript

示例1

console.log(foo); // undefined
var foo = 'JavaScript';
// 輸出 undefined

上面的例子中,在聲明變量foo以前打印這個變量,輸出了undefined而沒有報錯。html

這樣的現象在函數中一樣存在:前端

示例2

function example(){
    console.log(foo);
    var foo = 'Hello JavaScript'
}

example(); // 輸出:undefined

事實上,上面的代碼等價於:java

function example(){
    var foo;
    console.log(foo);
    foo = 'Hello JavaScript'
}

example(); // 輸出:undefined
注意:使用let、const聲明變量不會存在變量提高

JS函數提高

函數提高是指使用函數聲明建立函數時,把整個函數聲明提高到做用域的頂部的現象。
看下面的例子:函數

typeof foo; // function
typeof bar; // undefined


// 使用函數聲明建立函數
function foo(){
    console.log('JavaScript');
}

// 使用函數表達式建立函數
var bar = function(){
    conosle.log('ECMAScript');
}

上面的例子中,使用函數表達式建立的函數bar出現了變量提高;使用函數聲明建立的函數foo出現了函數提高。code

EC前端 - JS 變量提高與函數提高htm

相關文章
相關標籤/搜索