在看阮一峰老师的es6入门的函数作用域部分时,乱搞出了一段代码,发现了一些问题
var x = 2;
function foo(x, y) {
var x = 3;
y();
console.log(x);
}
foo(1, function() {
console.log(x);
x = 5;
});
结果y中打印出x = 2,为什么不是1或3呢?
foo打印出x = 3
然后稍作调整,
var x = 2;
function foo(x) {
var x = 3;
function y () {
console.log(x);
x = 5;
}
y();
console.log(x);
}
foo(1);
y中打印的是3,foo中打印的是5,倒是符合预期,这是为什么呢?
狐的传说
相关分类