JavaScript 引擎的工作方式是,先解析代碼,獲取所有被聲明的變數,然後再一行一行地運行。這造成的結果,就是所有變數的聲明語句,都會被提升到代碼的頭部,這就叫做變數提升(hoisting)。 console.log(a); // undefined var a = 1; 上面的代碼首先使用 c ...
JavaScript 引擎的工作方式是,先解析代碼,獲取所有被聲明的變數,然後再一行一行地運行。這造成的結果,就是所有變數的聲明語句,都會被提升到代碼的頭部,這就叫做變數提升(hoisting)。
console.log(a); // undefined var a = 1;
上面的代碼首先使用 console.log 方法,在控制台顯示變數 a 的值。這時變數 a 還沒有聲明和賦值,應該會報錯,但實際上不會報錯。因為存在變數提升,真正運行的是下麵的代碼。
var a; console.log(a); a = 1;
最後的結果是顯示 undefined,表示變數 a 已經聲明,但還未賦值。