
1. 提升机制本质JS 在代码执行前的编译阶段会提前扫描当前作用域内所有变量和函数声明将其「提升至作用域顶部」这就是提升机制。提升只提升声明不提升赋值。2. 变量提升varvar 声明的变量会提升默认初始值为undefined。console.log(a); // undefined var a 10; console.log(a); // 10代码等价于先声明 var a再执行打印、再赋值。3. 函数提升函数声明式会整体提升可在声明前调用函数表达式遵循变量提升规则。fn(); // 正常执行 function fn(){ console.log(函数提升); } // 函数表达式不会整体提升 console.log(f2); // undefined var f2 function(){};4. 提升优先级函数提升 变量提升5. 实战坑点总结var 变量提升导致变量穿透、全局污染变量同名时函数提升会覆盖变量声明let/const 不存在变量提升存在暂时性死区