今天來補充昨天提到的Hoisting(變數提升),還有講解區域變數跟全域變數的差別。
Hoisting:
變數提升使得我們在宣告之前可以使用變數,而不會引發錯誤。
例如這樣
//var x = undefined;
console.log(x); // undefined
var x = 10;
javascript引擎會將var x 提升到它所在的作用域的頂部,然而變數提升只會提升宣告,並不會給值,所以console.log(x)出來會是undefined。
區域變數 vs 全域變數:
// 全域變數
let globalVariable = "我是全域變數";
function exampleFunction() {
// 區域變數
let localVariable = "我是區域變數";
console.log(globalVariable); // 可以訪問全域變數
console.log(localVariable); // 可以訪問區域變數
}
exampleFunction(); //會印出我是"全域變數"跟"我是區域變數"
console.log(globalVariable); // 可以訪問全域變數
console.log(localVariable); // 無法訪問區域變數,會引發錯誤