关于调用函数创建的局部作用域

关于调用函数创建的局部作用域

http://img1.sycdn.imooc.com//climg/5d4d08ca0001726812510676.jpg

如果add()函数中,没有return语句,是否右图中add下创建的局部作用域不会被销毁?

调用3次add()函数后,是否会产生3个局部作用域?

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

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

1回答
好帮手慕星星 2019-08-09 16:32:44

同学你好,

和return 没有关系,return只是结束代码执行并返回计算结果的。

这里的局部作用域在函数中代码执行完毕之后就会被销毁,所以外面是获取不到局部变量的。

每次调用add函数,都会创建一次局部作用域,所以调用三次就会创建三次,并且全部会被销毁。

祝学习愉快!

  • 提问者 慕少0288913 #1
    var btns = document.getElementsByTagName('button'); for (var i = 0; i < 3; i++) { btnOnclick(i); } function btnOnclick(index){ btns[index].onclick = function(){ alert(index); } } 之前有一道题: 绑定3个按钮,点击输出i的值。 请问老师: for循环中,btnOnclick()每次被调用之后,它的局部作用域都被销毁,那么,为什么index的值可以被保存下来?每次触发点击事件都可以输出这个index值?
    2019-08-10 11:25:25
  • 好帮手慕星星 回复 提问者 慕少0288913 #2
    因为btn按钮绑定了点击事件,函数中的事件被外部占用着,所以函数中内容不会被销毁,从而点击按钮的时候可以使用当前作用域中的index值,形成了一个闭包。
    2019-08-10 12:15:34
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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