这段没看明白

这段没看明白

var a = 1;

function b(){

a = 10;

return;

var a = 100;

}

b();


为什么是1结果

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

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

2回答
好帮手慕星星 2019-11-19 18:50:14

同学你好,在b函数中,下面有用var声明a变量:

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

b函数预解析的时候,var声明的a会提升到前面并赋值为undefined,所以当执行代码a=10的时候,修改的是局部变量的值。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

好帮手慕星星 2019-08-09 13:45:39

同学你好,

1、你粘贴的这段代码如果输出b函数调用结果的话不是1,是undefined:

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

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

b函数中return 没有返回值,所以最后调用的结果为undefined。

2、如果输出a值,结果是1:

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

因为b中定义了a变量,那么在b中a就是局部变量,不会影响外面的全局变量a,所以最后输出全局a的时候结果仍然为1 。

如果没有解决同学的问题,可以将代码粘贴完整,详细说明一下问题,老师帮助你解决。

祝学习愉快!

  • 可是b中的a没有var啊,所以也是全局变量的,赋值了10,不应该输出10吗??
    2019-11-19 18:35:42
  • 同学你好,可以参考上面的回复。
    2019-11-19 18:50:33
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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