• 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(){}