有本書叫 You Don't Know JavaScript (YDKJS)
目前在拜讀當中,
另外想加強自己的JS,
所以來寫一些 I Don't Know JavaScript (IDKJS)
Hoisting is JavaScript's default behavior of moving declarations to the top. - W3school
在JavaScript中變數可以在宣告前被使用。
console.log(x); //x is not defined
x
沒有被宣告,會跳出錯誤告訴你x
未被定義。
var x = 0;
console.log(x); // 0
console.log(y); // undefined
var y;
x
有被宣告也有被賦值;y
在使用下方被宣告,但沒有賦值,所以是undefined
。
console.log(y); // undefined
var y = 1;
y
有被宣告也有被賦值,但console的結果是undefined
可以知道在JavaScript中,只有declaration會被 hoisting。
Const / Let的宣告方式是不會被hoisted的。
console.log(x); // x is not defined
const x = 0;
console.log(y); // y is not defined
let y;
在strict mode下不允許變數還沒被宣告時使用,
"use strict";
z = 0;
console.log(z); // z is not defined
但是一樣會有hoisting
"use strict";
console.log(z); // undefined
var z;