天天看點

javaScript中的函數聲明提升---函數聲明與函數表達式

javaScript中的函數聲明提升

關于函數聲明提升 -(所有聲明變量或聲明函數都會被提升到目前函數的頂部);

但是

函數聲明function a(){}和函數表達式var a = function(){}的差別:

函數聲明被徹底的提升并且可以在聲明之前被調用

函數表達式雖然也被提升了,但是調用時值是undefined

相信下面兩個小例子會讓你完全明白:

例1

addition(4, 7);

substraction(10, 2);

console.info(addition(4, 7), substraction(10, 2))//輸出->11,undefined

function addition(num1, num2) {

return num1 + num2;

}

var substraction = function (num1, num2) {

return num1 - num2;

}

變量提升之後的情況

function addition(num1, num2) {

return num1 + num2;

}

var substraction;

console.info(addition(4, 7), substraction(10, 2))//輸出->11,undefined

substraction = function (num1, num2) {

return num1 - num2;

}

例2

var foo = 1;

(function () {

console.log(foo); //undefined

var foo = 2;

console.log(foo); //2

})();

//變量聲明提升之後的情況

(function () {

var foo;

console.log(foo); //undefined

foo = 2;

console.log(foo); //2

})();

是不是已經很明白了?

繼續閱讀