3分钟理解【JavaScript提升】

178 阅读1分钟

前言

大家好,我是cv竹叶,今天我们来聊一聊javaScript提升,主要是变量提升函数提升

1、什么是变量提升?

变量提升:只有用var声明的变量,都会提前,往作用域内置顶,而赋值等操作都会停留原地。let和const 不会变量提升。

像这段代码:

number=2021;
var number;
console.log(number);//2021

输出的结果是2021,而不是undefined。因为var number提升到最顶部了。

2、什么是函数提升?

函数提升:只要声明了函数,在作用域内,任何地方都可以调用到函数,这就是函数提升。

像这段代码:

fnc();
function fnc(){
    console.log('cv竹叶');
}

我们可以看到,先调用fnc()函数,再声明fnc函数,是可以正常运行的。但是需要注意的是,函数表达式不会被提升

像这样函数表达式不会被提升:

fnc();
var fnc = function(){
    console.log('cv竹叶');
}

这样会报错提示fnc()函数没有声明。因为var fnc变量被提升到fnc()函数调用之前了。

如果遇到函数提升变量提升同时存在,函数提升会优先,变量提升会被忽略。

总结

由于JavaScript提升的存在,在同一个作用域之中无论变量声明还是函数声明,都会在代码被执行之前优先处理。