【问题标题】:Hoisting clarification in JavaScriptJavaScript 中的提升说明
【发布时间】: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


【解决方案1】:

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

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

这会给你 undefined 作为它的初始化但未声明。

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

欲了解更多信息,

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-19
    • 2020-12-10
    • 2012-10-31
    • 2013-12-05
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    相关资源
    最近更新 更多