• js解释执行
• 变量和函数提升
变量声明提前,函数声明提前
• 变量声明提前:值停留在本地
• 函数声明提前:整个函数体提前
如果是var赋值声明的函数,变量提前,函数体停留在本地
1、变量提升
未声明使用会报错
console.log(a); // Error: a is not defined
var会变量提升
console.log(a); // undefined var a = 10;
let定义不会提升
console.log(a); // Error: Cannot access 'a' before initialization let a = 10;
2、函数提升
console.log(func); // func(){} function func(){}
console.log(foo); // undefined var foo = function func(){}
console.log(func); // Error: func is not defined var foo = function func(){}