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

results matching ""

    No results matching ""