为了账号安全,请及时绑定邮箱和手机立即绑定

立即执行函数中声明非匿名函数问题

立即执行函数中声明非匿名函数问题

呼如林 2019-03-21 22:19:40
题目描述            var a=1;                        (function a(){                console.log(1,a);                a=2;                console.log(2,a);                delete a;                console.log(3,a);            })();            console.log(4,a);求问a=2这一句到底有什么意义?以及输出的为什么是a函数本身代码?
查看完整描述

2 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

1, a=2;是相对于第一行的var a=1;而来的,主要演示变量的作用域问题.
2, 在函数表达式(就是括号括起来的函数部分)中,a的作用就是函数本身,用于自身引用(比如递归),是一个"被污染"的变量名.下面的赋值和删除都无法对a进行操作,因为它就不是一个常规的变量.

查看完整回答
反对 回复 2019-04-14
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

   a = 1

    // 相当于

    var a = undefinded

    a = 1

    // 且被提升为全局变量

所以闭包内部的 a 当然是函数本身了。


查看完整回答
反对 回复 2019-04-14
  • 2 回答
  • 0 关注
  • 365 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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