JavaScript 中的提升说明

问题描述 投票:0回答:2

我所知道的是:如果变量在没有声明的情况下初始化,那么它们会自动初始化。

JavaScript 中的提升仅将声明提升到顶部,而不是初始化。

我在 Google Chrome 控制台上尝试过的内容:

console.log(num);

结果:

未捕获的引用错误:num 未定义
于 :1:13
原因:由于 hum 未声明或初始化

num = 9; console.log(num);

结果:

9

原因:由于初始化,它也被声明并且num得到它的值即9

console.log(hum); hum = 8;

结果:

VM519:1 未捕获的引用错误:嗡嗡声未定义
于 :1:13

我不明白的是:

由于我已将

hum
初始化为
8
,它也会被声明并通过在 JS 中提升,
hum
的声明被提升,我应该得到
undefined
作为结果。为什么没有发生?

javascript variables console.log hoisting
2个回答
1
投票

如果在使用 var、let 或 const 声明(或初始化)时未给 JavaScript 变量赋值,则 JavaScript 变量以 undefined 值开头。

console.log(hum); hum = 8; console.log(typeOf(hum));

这会给你未定义的信息,因为它已初始化但未声明。

console.log(hum); var hum = 8;
将会被吊起。

欲了解更多信息,

https://medium.com/coding-at-dawn/how-to-check-for-undefined-in-javascript-bcedd62c8ad


-1
投票
line 1: console.log(num);
line 2: num = 8;  

即使第一行开始执行num也会分配 内存中未定义(关键字)。

当它完成第一行执行时,它会从内存中打印 undefined 。

第二行完成执行后,内存中的 undefined 被替换为 8。

这个过程称为提升。

在这种情况下,


line 1: num = 8; 
line 2: console.log(num);

即使第一行开始执行num也会分配 内存中未定义。

当它完成第一行执行时,它会将 8 存储在内存中。

第二行完成执行后,它在控制台中打印 8。

© www.soinside.com 2019 - 2024. All rights reserved.