Nat*_*lie 1 javascript computer-science
术语“初始化”和“赋值”似乎可以互换使用。我做了一些搜索,似乎技术上可能存在差异。我的理解是,在变量的上下文中,当 JavaScript 引擎使其可供使用时,变量就会被初始化,而赋值(无论是显式完成 [如let foo = 1;
] 还是由 JavaScript 引擎完成,如下例所示)是一种方法为了达成这个。
let foo;
console.log(foo); // undefined (initialization and assignment?)
Run Code Online (Sandbox Code Playgroud)
我的理解正确吗?另外(如果是这样),在初始化过程中实际发生了什么以使变量可用?
总而言之:
{ // declaration (hoisted)
// Temporal deadzone
let foo; // declaration and initialization to undefined
foo = 1; // assignment
}
Run Code Online (Sandbox Code Playgroud)
有点长:
宣言
声明变量意味着我们在当前范围内保留标识符。在 javascript 中,声明是提升的,这意味着当变量所在的范围可见时(它所在的块被执行),它就会被声明。但是您现在无法访问该变量,因为它位于
这是范围开始和初始化之间的代码的特定部分。尝试访问此处的变量会导致错误。
初始化
初始化发生在声明变量的行中。它将为变量分配一个值并使其可供访问。例如这个:
let foo;
Run Code Online (Sandbox Code Playgroud)
将初始化foo
为undefined
,
let foo = 2;
Run Code Online (Sandbox Code Playgroud)
将初始化foo
为2
.
任务
...只是意味着您更改了变量的值。javascript 中的所有赋值都使用=
. 初始化基本上只是第一次分配。
上面的解释不适用于用 声明的变量var
,所以不要使用var
以避免混淆:)
归档时间: |
|
查看次数: |
972 次 |
最近记录: |