Hoisting 特性
image source: Guilherme Blog
JavaScript 中有個很有趣的特性叫做: Hoisting。
會將當作用域的變數跟函數提升到最前面。
x();
function x() {
console.log('This is x func.');
}
其實 JavaScript 執行時把函數宣告式提升到當前作用域的頂部了。
function x() {
console.log('This is x func.');
}
x();
只針對變數宣告的部分提升,不提升指定 (assign) 的部分。
console.log(x); // undefined
console.log(test); // undefined
var x = 'This is x variable.';
var test = function (arg1) {
console.log('This is test func(' + arg1 + ')');
};
console.log(x); // This is x variable.
test(x); // This is test func(This is x variable.)
那如果以下的情況呢 ?
var y = 100;
function print_y() {
console.log(y); // ???
var y = 200;
}
print_y();