一、变量提升
1.代码执行之前把当前作用域下所有var声明的变量提升到当前作用域最前面,2.值提升声明不提升赋值(注意:是当前作用域 如果函数作用域提升到函数作用域最前面)
let const没有变量提升
二、函数提升类似变量提升 声明之前可以使用
1.代码执行之前把所有函数声明提升到当前作用域最前面
2.提升函数声明 整个function提前,不提升函数调用
fn()
function fn(){
console.log(1)
}
//可以打印
总结:
使用函数调用函数不强调先声明后调用
使用变量要求先声明后调用
使用函数表达式声明的函数赋值必须先声明后调用
vat a = function fn(){
console.log('函数表达式')
}