为了账号安全,请及时绑定邮箱和手机立即绑定

js作用域相关问题

js作用域相关问题

撒科打诨 2019-05-23 10:53:41
先上代码functiona(){vartemp=10;functionb(){console.log(temp);//10}b();}a();functiona(){vartemp=10;b();}functionb(){console.log(temp);//报错}a();模模糊糊有个作用域的概念,但是无法清楚明白的说出来,请大佬指点~*打印出a函数的原因是将变量和函数取为同名了,现在已修改
查看完整描述

2 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

第一段代码相信没啥问题,函数b执行是能取到其父函数a作用域下的变量a。
第二段由于函数a和函数b是同级函数,变量a是在函数a的作用域下,且没有全局作用域下的变量a的声明,所以报错。
                            
查看完整回答
反对 回复 2019-05-23
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

第二种,怎么会是报错呢?不太明白题主的报错是什么意思,a是一个函数,输出函数不会报错
调用函数时函数内调用的变量会在本函数内或定义函数的作用域向外找
在定义函数的作用域找而非调用的作用域:
functiona(){
console.log(b);
}
letb=10
{
letb=1;
a();//10
}
当调用b的时候,b会在本函数内找a,没有向外找,去定义b的作用域(全局)找a,这时a是全局函数找到了,然后输出a
                            
查看完整回答
反对 回复 2019-05-23
  • 2 回答
  • 0 关注
  • 337 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信