我所知道的是:如果变量在没有声明的情况下初始化,那么它们会自动初始化。
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
作为结果。为什么没有发生?
如果在使用 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
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。