(function b() {
b = 123;
console.log('1---',b);//function b
c=1;
})();
console.log('2---',b);//undefined
console.log('3---',c);//1
console.log('4---',window);//蕴含c不蕴含b
依据上下文执行程序来讲,第一次打印应是最初一次赋值的后果 123,事实上后果是function b;因为是自执行函数:
1.b会立刻执行
2.自执行函数是一个函数表达式
3.自执行函数具名的话,名称等同于 const b=值;
因而函数外部赋值不成立,const申明的常量不能被批改。
之所以没有报错信息起因如下:

https://www.zhihu.com/questio...