为什么第二个会报错啊

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

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

3回答
慕设计5766360 2018-02-02 10:58:29

在预解析时var后面的a=undefined,函数被全部解析,在执行fn()这个函数时var后面的a已经给赋值为1,所以第一个输出a就为1.   a=3为全局变量,所以第二个输出a就为3

怎么都被占用了呢 2018-01-29 13:40:37

是的,如果a=3前面加上var的话,在函数内,a就是局部变量了,第一次打印的a值,是访问的是没有定义值的局部变量a,就是undefined了

怎么都被占用了呢 2018-01-29 11:06:53

你是想问第二项问什么是错误的吗,因为在函数内,a的定义没有使用使用var,所以函数内访问到的a是全局的。

所以第一个打印的a是访问的函数外部的全局变量,值为1,接着向下执行代码,a=3,对全局变量的值进行了重新赋值,所以在第二次打印的时候,是新的值3

  • 提问者 金沙熊飞 #1
    如果a=3之前加上var,结果是不是就不一样啦,
    2018-01-29 11:44:32
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
进击JavaScript核心 2018
  • 参与学习       466    人
  • 提交作业       74    份
  • 解答问题       635    个

JavaScript不仅能实现静态页面到动态特效的转变,还能完成数据的动态交互,但是关于js到底功能有多强大,大家还是有所期待的,本路径将带你深入到js中,一一揭开JavaScript的神秘面纱。

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

在线咨询

领取优惠

免费试听

领取大纲

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