【发布时间】:2020-12-08 07:55:57
【问题描述】:
我知道的:如果变量在没有声明的情况下初始化,那么它会自动初始化。
在 JavaScript 中提升只会将声明提升到顶部,而不是初始化。
我在 Google Chrome 控制台上的尝试:
console.log(num);
结果:
Uncaught ReferenceError: num is not defined
at <anonymous>:1:13
原因:由于没有声明或初始化哼声
num = 9; console.log(num);
结果:9
原因:由于初始化,它也被声明并且num得到它的值即9
console.log(hum); hum = 8;
结果:
VM519:1 Uncaught ReferenceError: hum is not defined
at <anonymous>:1:13
我无法理解的:
因为我已经将hum 初始化为8,它也将被声明,并且通过在 JS 中提升,hum 的声明被提升,结果我应该得到 undifined。为什么没有发生?
【问题讨论】:
-
看到这个
doc -
你在哪里将哼声初始化为 6? - 不是
undeclared,而是undefined -
这能回答你的问题吗? Javascript function scoping and hoisting
-
声明 (
var) 被提升。这里没有声明。 -
在草率模式下初始化一个未声明的变量不会声明它 - 它会将它添加为 gobal 对象的属性。在代码开头包含
"use strict";以生成分配给未声明变量的错误。
标签: javascript variables console.log hoisting