JavaScript吊起了什么?

吊装在JavaScript编程语言中的含义的简要说明

JavaScript在执行代码之前对其进行解析,并将找到的每个函数和变量声明添加到其自己的内存中,并将它们保存在内存中。这就是所谓的吊装

对于函数声明和函数表达式,我们有一些不同的行为。

使用函数声明,我们可以在定义函数之前调用它,然后我们的代码将起作用。在其他情况下,我们会出现错误。

一般的经验法则是,在使用函数,变量,对象和类之前,请务必对其进行定义,以免引起意外。

假设我们有一个函数:

function bark() {
  alert('wof!')
}

由于吊装,我们可以在技术上调用bark()在声明之前:

bark()
function bark() {
  alert('wof!')
}

使用功能时,这仅在以下情况发生函数声明。就像上面的情况一样。

不适用于函数表达式

这是一个函数表达式:

bark()
var bark = function() {
  alert('wof!')
}

在这种情况下,var声明被初始化并初始化undefined作为值,是这样的:

var bark = undefined
bark()
bark = function() {
  alert('wof!')
}

运行此代码将为您提供TypeError: bark is not a function错误。

constlet声明也被悬挂,但是它们没有被初始化为undefined,如var

const bark = function() {
  alert('wof!')
}

或者

let bark = function bark() {
  alert('wof!')
}

在这种情况下,如果您调用bark()在声明它之前,它将给您一个ReferenceError: Cannot access 'bark' before initialization错误。

将对象或类分配给变量的任何其他表达式也会发生同样的情况

类声明的工作方式类似于letconst声明:它们被吊起,但未初始化,并且在声明之前使用类会给ReferenceError: <Class> is not defined错误。

免费下载我的JavaScript初学者手册


更多js教程: