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

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

作者: 皮卡球ca | 来源:发表于2019-10-17 16:19 被阅读0次
           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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/xqchuctx.html