写在前面: 变量提升是 声明提升,初始化不会提升,比如说 var a=1; console.log(a); 实际是这样执行(个人理解,仅供参考) var a; console.log(a); a=1; 以下控制台输出undefined:证明是被提升,如果声明未被提升,会报错 console.log(a); var a= 1; 函数提升同理,函数整个代码块提升,同样测试被复制的变量是不会提升 foo(); function foo() { console.log(1); } foo = funct…