# 提升
包括
变量
和函数
在内的所有声明
都会在任何代码
执行前首先被处理
,赋值操作
会在执行到这句话时在进行处理。
这个过程导致变量
和函数的声明
好像从代码出现的位置被移动
,这个过程就是提升
(每个作用域都会有提升
操作)。
// 变量提升
num = 1;
console.log(num); // 1 不会报错,因为var num;会被提升
var num;
// 变量提升2
console.log(num1); // undefined 而不是ReferenceError 编译阶段会把num1放到作用域,在代码执行到这一句时在进行 = 2的赋值操作
var num1 = 2;
// 等同于 >>>>>
// var num1;
// console.log(num1);
// num1 = 2;
// 函数提升 比较常见
smile(); // haha
function smile() {
console.log('haha');
}
函数声明被优先提升,然后才是变量。
- 编译器先把
函数声明
放到作用域,再把变量
声明放到作用域 函数表达式
等同于声明变量,提升优先级与变量一致
如果觉得内容对你有帮助,请点个赞和关注,你们的鼓励是我持续更新下去的动力,比心。
如需转载请注明出处,感恩。
更多内容可先关注GitHub (opens new window)