初始化与分配

时间:2018-06-17 08:59:53

标签: javascript computer-science

术语"初始化"和"任务"似乎可以互换使用。我做了一些搜索,似乎技术上可能有所不同。我的理解是,在变量的上下文中,当JavaScript引擎使其可供使用和赋值时(无论是在let foo = 1;]中显式完成还是由JavaScript引擎完成,都会初始化变量,如下所示)例子)是实现这一目标的一种方法。

let foo;
console.log(foo); // undefined (initialization and assignment?)

我的理解是否正确?另外(如果是这样),在初始化期间实际发生什么以使变量可用?

1 个答案:

答案 0 :(得分:4)

TLDR:

{ // declaration (hoisted)
  // Temporal deadzone
  let foo; // declaration and initialization to undefined
  foo = 1; // assignment
}

再长一点:

  

声明

声明变量意味着我们在当前范围内保留标识符。在javascript声明被提升时,这意味着当变量所在的范围变得可见时它被声明(它所处的块被执行)。但是,您现在无法访问该变量,因为它位于

  

The temporal deadzone

这是代码的开头和初始化之间的代码的特定部分。试图在此处访问变量会导致错误。

  

初​​始化

初始化发生在您声明变量的行中。它将为变量分配一个值,并使其可供访问。例如:

let foo;

会将foo初始化为undefined

let foo = 2;

会将foo初始化为2

  

分配

...只是意味着您更改变量的值。 javascript中的所有作业都使用=。初始化基本上只是第一个暗示。

上述说明不适用于使用var声明的变量,因此请不要使用var来避免混淆:)