代码如下
var a = 1;
function demo() {
console.log(a); //undefined
var a = 2;
console.log(a); // 2
}
demo();
为什么第一个是 undefined 第二个是 2 ?
因为这一句:
var a = 2;
JavaScript 函数里的 var 声明执行时会被提升到函数的顶端,也就是说最终执行的代码不是:
console.log(a);
var a;
a = 2;
而是:
var a; // 这里的声明将外部作用域中的 a 声明覆盖掉了
console.log(a); // undefined
a = 2;
把那个 var 去掉就正常了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。