变量提升与函数提升的区别?

变量提升

简单说就是在 JavaScript 代码执行前引擎会先进行预编译,预编译期间会将变量声明与函数声明提升至其对应作用域的最顶端,函数内声明的变量只会提升至该函数作用域最顶层
当函数内部定义的一个变量与外部相同时,那么函数体内的这个变量就会被上升到最顶端
举例来说:

console.log(a); //undefined
var a = 3; //预编译后的代码结构可以看做如下运行顺序

var a; // 将变量 a 的声明提升至最顶端,赋值逻辑不提升。
console.log(a); // undefined
a = 3; // 代码执行到原位置即执行原赋值逻辑

函数提升

函数提升只会提升函数声明式写法,函数表达式的写法不存在函数提升
函数提升的优先级大于变量提升的优先级,即函数提升在变量提升之上

posted @ 2022-04-02 19:28  煜火  阅读(247)  评论(0)    收藏  举报