请问一下??

请问一下??

function fn(){

for(){

for(){

}

}

}

这样算不算有3层作用域?还是只能是函数里面嵌套函数,才算

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
卡布琦诺 2019-05-16 19:09:59

作用域可以简单的理解为作用的范围,一般就是大括号就是一个域,也就是一个范围,一个空间,如果当前这个大括号内找不到变量的初始值,就回去上一级中去找,但是,这里需要注意的以下一点:

// for i 的作用域
for( var i = 0;i<4; i++){    
……
}
console.log(i); // 输出4,也就是 i 的作用域是在外面

for循环中使用var声明的话,var声明的变量会提升为全局变量,所以这里是没有作用域的

如果是es6的写法,for循环中使用let声明,就是三层作用域:

// for i 的作用域
for( let i = 0;i<4; i++){    
……
}

希望可以帮到你!

  • 提问者 慕仰2255090 #1
    for( var i = 0;i<4; i++){ for( var j = 0;j<4; j++){ } } 老师,这样2个var就是代表2层作用域了是吧?
    2019-05-17 11:14:41
  • 卡布琦诺 回复 提问者 慕仰2255090 #2
    可以理解成是for循环使用var声明变量是没有作用域的,即 for( var i = 0;i<4; i++){ for( var j = 0;j<4; j++){ } } 不存在作用域。for( let i = 0;i<4; i++){ for( let j = 0;j<4; j++){ } } 是有2层作用域的
    2019-05-17 17:30:44
  • 老师,这里不懂哎,上面你写的for循环中使用let声明是有三层作用域(i=0,1,2,3),但是这里for循环里面再套一个for循环,为什么就是两层作用域了呢,按我理解应该是3*3=9层呀?
    2019-07-22 20:10:04
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师