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

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

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

2.如何打印出20?这个很简单,我们只需要告诉引擎,b是新定义的一个变量就OK了。
前端进阶|第十一天 当全局变量,块变量,函数叫了同一个名字。。

不只是let ,还有const和var也可以实现相同的效果。
除此之外,我们还可以把立即执行的函数名去掉。
前端进阶|第十一天 当全局变量,块变量,函数叫了同一个名字。。

3.如何打印10?朋友给出的解法是在打印20的基础上做的,去掉立即函数的名字,然后把b=20的移到console下面。
前端进阶|第十一天 当全局变量,块变量,函数叫了同一个名字。。

实现是OK的,但我觉得改动有点大,我个人觉得要打印10,只需要告诉程序要打印的是第一行定义的b就可以了,可以从作用域的范围入手,第一个b是*作用域,打印时指明时window.b。
前端进阶|第十一天 当全局变量,块变量,函数叫了同一个名字。。

上一篇:选型宝访谈:怎样构建统一、共享的主数据平台,打造真正干净的数据治理能力?


下一篇:Delphi三层架构数据库