JavaScript声明提升如何影响代码执行顺序和性能优化?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1228个文字,预计阅读时间需要5分钟。
1. 引用及基本原理 + 在学习JavaScript声明提升之前,我们先看看下面的例子: + console.log(a); var a=2; + 运行结果会是什么?你可能会有以下的猜测: + 1. 报错ReferenceError: a is not defined; + 2. 打印2;
1 引例及基本原理
在学习JavaScript声明提升之前,我们先看下面这个例子:
console.log(a); var a=2;
运行结果会是什么?你可能会有以下的猜测:
1.报错ReferenceError: a is not defined;
2.打印2;
3.打印undefined。
正确的结果是第三种,打印undefined。
下面让我们来看看具体的原因。其实,对于var a=2;这条语句,JavaScript会将其视为两个声明:
- 定义声明var a,会在编译阶段进行;
- 赋值声明a=2,会留在原地等待执行阶段进行。
而所谓的声明提升:就是JavaScript会把var变量声明和函数声明都会被提升到各自作用域的顶部,而赋值操作并不会被提升。
本文共计1228个文字,预计阅读时间需要5分钟。
1. 引用及基本原理 + 在学习JavaScript声明提升之前,我们先看看下面的例子: + console.log(a); var a=2; + 运行结果会是什么?你可能会有以下的猜测: + 1. 报错ReferenceError: a is not defined; + 2. 打印2;
1 引例及基本原理
在学习JavaScript声明提升之前,我们先看下面这个例子:
console.log(a); var a=2;
运行结果会是什么?你可能会有以下的猜测:
1.报错ReferenceError: a is not defined;
2.打印2;
3.打印undefined。
正确的结果是第三种,打印undefined。
下面让我们来看看具体的原因。其实,对于var a=2;这条语句,JavaScript会将其视为两个声明:
- 定义声明var a,会在编译阶段进行;
- 赋值声明a=2,会留在原地等待执行阶段进行。
而所谓的声明提升:就是JavaScript会把var变量声明和函数声明都会被提升到各自作用域的顶部,而赋值操作并不会被提升。

