让前端飞Web前端之路前端从入门到放弃

var 变量提升分析

2019-11-07  本文已影响0人  青山旁小溪边

原理

JS的工作方式

  1. 先解析代码,获取到所有被声明的变量。
  2. 然后再运行。

换成专业术语就是预处理阶段和执行阶段。
什么是变量提升,它的定义是什么?
变量提升:所有变量的声明语句都会被提升到代码头部。
例子:

console.log(a);
var a = 100;

在控制台执行以上代码并不会报错误,它会打印undefined,其实在js中运行过程是:

var a;
console.log(a);
a = 100;

运行过程中变量a已经声明,但未被赋值。
变量提升只适用于用var声明的变量

console.log(a);
a = 100;

这种情况,js就会抛出异常:Uncaught ReferenceError: a is not defined

function函数也是变量,所以它也存在变量提升
例子:

a();
function a(){
  console.log(1)
}

由于变量提升的原因,打印结果:1
但是如果是赋值语句定义函数,js就会报错:

a();
var a = function a(){
  console.log(1)
}

js抛出异常:Uncaught ReferenceError: a is not defined
why?
js运行过程中,它把声明的a变量提升了,运行代码其实是这样的:

var a;
a();
a = function(){
    console.log(1);
};

最后的总结

上一篇 下一篇

猜你喜欢

热点阅读