js作用域相关问题

先上代码
functiona(){
vartemp=10;
functionb(){
console.log(temp);//10
}
b();
}
a();
functiona(){
vartemp=10;
b();
}
functionb(){
console.log(temp);//报错
}
a();
模模糊糊有个作用域的概念,但是无法清楚明白的说出来,请大佬指点~
*打印出a函数的原因是将变量和函数取为同名了,现在已修改
撒科打诨
浏览 338回答 2
2回答

杨__羊羊

第一段代码相信没啥问题,函数b执行是能取到其父函数a作用域下的变量a。第二段由于函数a和函数b是同级函数,变量a是在函数a的作用域下,且没有全局作用域下的变量a的声明,所以报错。

回首忆惘然

第二种,怎么会是报错呢?不太明白题主的报错是什么意思,a是一个函数,输出函数不会报错调用函数时函数内调用的变量会在本函数内或定义函数的作用域向外找在定义函数的作用域找而非调用的作用域:functiona(){console.log(b);}letb=10{letb=1;a();//10}当调用b的时候,b会在本函数内找a,没有向外找,去定义b的作用域(全局)找a,这时a是全局函数找到了,然后输出a
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript