JavaScript中变量提升的原理及影响如何浅析?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1298个文字,预计阅读时间需要6分钟。
目录+前言:+函数提升+var变量提升+let const提升+Class提升+前言:+JavaScript中奇特的一点是你可以在变量和函数声明之前使用它们。也就是说,变量声明和函数声明被提升了,提升了代码的顶部一样。
目录
- 前言:
- 函数提升
- var变量提升
- let & const提升
- Class提升
前言:
JavaScript中奇怪的一点是你可以在变量和函数声明之前使用它们。就好像是变量声明和函数声明被提升了代码的顶部一样。
sayHi() // Hi there! function sayHi() { console.log('Hi there!') } name = 'John Doe' console.log(name) // John Doe var name
然而JavaScript并不会移动你的代码,所以JavaScript中“变量提升”并不是真正意义上的“提升”。
JavaScript是单线程语言,所以执行肯定是按顺序执行。但是并不是逐行的分析和执行,而是一段一段地分析执行,会先进行编译阶段然后才是执行阶段。
在编译阶段阶段,代码真正执行前的几毫秒,会检测到所有的变量和函数声明,所有这些函数和变量声明都被添加到名为Lexical Environment的JavaScript数据结构内的内存中。所以这些变量和函数能在它们真正被声明之前使用。
本文共计1298个文字,预计阅读时间需要6分钟。
目录+前言:+函数提升+var变量提升+let const提升+Class提升+前言:+JavaScript中奇特的一点是你可以在变量和函数声明之前使用它们。也就是说,变量声明和函数声明被提升了,提升了代码的顶部一样。
目录
- 前言:
- 函数提升
- var变量提升
- let & const提升
- Class提升
前言:
JavaScript中奇怪的一点是你可以在变量和函数声明之前使用它们。就好像是变量声明和函数声明被提升了代码的顶部一样。
sayHi() // Hi there! function sayHi() { console.log('Hi there!') } name = 'John Doe' console.log(name) // John Doe var name
然而JavaScript并不会移动你的代码,所以JavaScript中“变量提升”并不是真正意义上的“提升”。
JavaScript是单线程语言,所以执行肯定是按顺序执行。但是并不是逐行的分析和执行,而是一段一段地分析执行,会先进行编译阶段然后才是执行阶段。
在编译阶段阶段,代码真正执行前的几毫秒,会检测到所有的变量和函数声明,所有这些函数和变量声明都被添加到名为Lexical Environment的JavaScript数据结构内的内存中。所以这些变量和函数能在它们真正被声明之前使用。

