JavaScript变量提升的本质是什么?

2026-04-17 23:460阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1314个文字,预计阅读时间需要6分钟。

JavaScript变量提升的本质是什么?

JavaScript中一个奇特之处是,你可以在变量和函数声明之前使用它们。这就好像变量和函数声明被提升了,使得它们可以在声明之前被访问。+sayHi() // Hi there! function sayHi() { console.log('Hi there!'); } name='Jo';

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数据结构内的内存中。所以这些变量和函数能在它们真正被声明之前使用。

阅读全文

本文共计1314个文字,预计阅读时间需要6分钟。

JavaScript变量提升的本质是什么?

JavaScript中一个奇特之处是,你可以在变量和函数声明之前使用它们。这就好像变量和函数声明被提升了,使得它们可以在声明之前被访问。+sayHi() // Hi there! function sayHi() { console.log('Hi there!'); } name='Jo';

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数据结构内的内存中。所以这些变量和函数能在它们真正被声明之前使用。

阅读全文