js是世界上最好的语言!!
今天在v站看到一个帖子,问道:git
var a = 10; { a = 99; function a() { console.log(a); } a = 30; } console.log(a);
“块级做用域,10!”,我看完便冷笑道。es6
然而Google Chrome Version 88.0.4324.150
输出的99
却狠狠地打了个人脸。github
来不及多想,就看到底下有老哥给出了一个GitHub Issue(这就是专业.jpg),issue中的回复又指向了一篇文章。浏览器
粗看了下文章,直接说个人总结:code
a
确实应该是10,非严格模式才是99, es规范准确的定义了该特性在严格模式中应有的表现。。var a; a = 10; { let a = function () {console.log(a);} a = 99; function a() { // 等同于(var) a = (let) a , console.log(a); // 即把内部a的值(99)赋给外部a,这也是为何最后打印出来是99 } a = 30; // 这里只将内部a的值改成了30,外部仍是99 } console.log(a); // 99
啊,奇怪而无用的知识又增长了!刷论坛还能水文章,太棒了!(🐶作用域