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
啊,奇怪而無用的知識又增長了!刷論壇還能水文章,太棒了!(🐶作用域