代码如下
var a = 1;
function demo() {
console.log(a); //undefined
var a = 2;
console.log(a); // 2
}
demo();
为什么第一个是 undefined 第二个是 2 ?
代码如下
var a = 1;
function demo() {
console.log(a); //undefined
var a = 2;
console.log(a); // 2
}
demo();
为什么第一个是 undefined 第二个是 2 ?
你的代码等价于这个
var a = 1;
function demo() {
var a = undefined;
console.log(a); //undefined
a = 2;
console.log(a); // 2
}
demo();
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
因为这一句:
JavaScript 函数里的
var
声明执行时会被提升到函数的顶端,也就是说最终执行的代码不是:而是:
把那个
var
去掉就正常了。文档:var hoisting