javascript提升(hoisting)

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();