var b = 10;
(function b() {
//'use strict'
b = 20;
console.log(b);
})();
//打印结果 ƒ b(){ b = 20; console.log(b); }
1.函数表达式与函数声明不同,函数名只在该函数内部有效,并且此绑定是常量绑定。
2.对于一个常量进行赋值,在 strict 模式下会报错,非 strict 模式下静默失败。
3.IIFE(Immediately Invoked Function Expression立即调用函数表达式)中的函数是函数表达式,而不是函数声明。
(函数定义表达式中带函数名称的,函数名称只能作为常量在函数体内访问,不可以被重新赋值的,非严格模式下静默失败,严格模式下报错;)
www.cnblogs.com/xianshenglu… *****
变量提升:函数及变量的声明都将被提升到函数的最顶部。通常指的是变量声明 var 和函数声明 function fun() {...}
变量提升跟执行上下文有关