不是说函数内部可以访问到外部的变量吗?那为什么第一次弹出的不是111???

不是说函数内部可以访问到外部的变量吗?那为什么第一次弹出的不是111???

正在回答

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

2回答

第二个里面没有重新var定义呀,所以能取到外面的。如果是下图中那样,在最里面的方法中也重新用var定义了变量,那两个都是undefined了:

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

建议同学要多动手试试哦。

祝学习愉快!

  • zywzyw 提问者 #1
    好的。多谢老师!!
    2018-04-16 10:04:20
Miss路 2018-04-15 15:56:22

在函数内部使用var声明的变量是局部变量,函数内弹框输出a,访问的就是局部变量a的值,弹框是在变量赋值的前面执行的,所以获取变量值为未定义。

祝学习愉快!

  • 提问者 zywzyw #1
    可是,第二个11也是在函数嗯外面,那为什么11就能取到?
    2018-04-15 17:58:05
  • 提问者 zywzyw #2
    助教老师,您看到了了吗,期待回答。
    2018-04-16 07:49:11
  • qq_修炼者_0 回复 提问者 zywzyw #3
    首先 预解析的时候test函数里面和外面都有a都有var声明,会解析成undefined,subTest函数里面没有var声明,不会预解析。然后逐行读代码,外面的a赋值为111,执行到函数里面的时候因为此时的a还没有被赋值所以是预解析时候的值--》即第一个a值为undefined。程序读到subTest里面的时候,因为这里面的a没有预解析,所以在它的函数作用域里找不到,就向外面查找,刚好在test里面遇到了a,因为此时的test里的a不仅解析了还赋了值,所以subTest里面可访问到值--》11
    2018-04-16 14:31:30
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

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

在线咨询

领取优惠

免费试听

领取大纲

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