写在前面:
变量提升是 声明提升,初始化不会提升,比如说
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 = function () { console.log(2); }