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。
继续阅读与本文标签相同的文章
-
为什么它有典型FaaS能力,却是非典型FaaS架构? | 开发者必读(065期)
2026-05-18栏目: 教程
-
Mybatis执行SQL的4大基础组件详解
2026-05-18栏目: 教程
-
Java描述设计模式(08):桥接模式
2026-05-18栏目: 教程
-
Java描述设计模式(09):装饰模式
2026-05-18栏目: 教程
-
Java描述设计模式(10):组合模式
2026-05-18栏目: 教程
