相关代码
var a = "aa";
test();
function test(){
console.log(a);
var a = "bb";
console.log(a);
}
console.log(a);
//undefined bb aa
请问为什么第一个会打印undefined呢,函数内部不是可以访问函数外部的变量么
var a = "aa";
test();
function test(){
console.log(a);
var a = "bb";
console.log(a);
}
console.log(a);
//undefined bb aa
请问为什么第一个会打印undefined呢,函数内部不是可以访问函数外部的变量么
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
因为你下面也重新定义了a,所以a就被认为是一个
局部变量
,故test()
运行到第一个console.log(a)
时,a的值是undefined
,运行到下面才会被赋值为bb
。要理解
var a = 'bb'
的执行顺序,是先执行var a = undefined
, 等到具体执行赋值语句是才会把bb赋值给a
。