…
mozilla:變數和函數的宣告會在編譯階段就被放入記憶體,但實際位置和程式碼中完全一樣。
getMessage('this is test.');
var getMessage = function(msg) {
console.log(msg);
}
//result:
//Uncaught TypeError: getMessage is not a function
getMessage('this is test.');
function getMessage(msg) {
console.log(msg);
}
//result:
//"this is test."
var a = 1;
function getHoisting() {
if (!a) {
var a = 9;
}
console.log(a); //9, 因為function區域內未有a變數的宣告, javascript會自動在function下一行插入var a = undifined;
}
getHoisting();