前端进阶|第十一天 当全局变量,块变量,函数叫了同一个名字

       var b = 10;
        (function b() {
            b = 20;
            console.log(b);
        })();

笔试时遇到了的问题,全局变量,函数,块变量叫了同一个名字,除了问最终打印的是啥,还问如何可以打印出10(全局变量值)和20(块变量值)。
emm....
各个击破。
1.原始程序打印的是啥?是函数。


image.png

2.如何打印出20?这个很简单,我们只需要告诉引擎,b是新定义的一个变量就OK了。


image.png

不只是let ,还有const和var也可以实现相同的效果。
除此之外,我们还可以把立即执行的函数名去掉。


image.png

3.如何打印10?朋友给出的解法是在打印20的基础上做的,去掉立即函数的名字,然后把b=20的移到console下面。


image.png

实现是OK的,但我觉得改动有点大,我个人觉得要打印10,只需要告诉程序要打印的是第一行定义的b就可以了,可以从作用域的范围入手,第一个b是顶级作用域,打印时指明时window.b就OK了。
image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,978评论 0 38
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,894评论 2 9
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,161评论 1 32
  • 重点掌握 3 类对象和方法 对象就是一个物体 类的独特存在就是一个实例,对实例进行操作叫做方法。方法可以应用于类或...
    Coder大雄阅读 1,288评论 0 2
  • “好。”南云国主看着东伯雪鹰的眼神中都满是赞许,点头道,“我南云圣宗和天剑道斗了无尽岁月,一直都是处于弱势,这次他...
    im喵小姐阅读 340评论 0 0