【问题标题】:Why does console.log(undefined) works sometimes but not others? [duplicate]为什么console.log(undefined) 有时有效,但有时无效? [复制]
【发布时间】:2018-06-15 05:27:18
【问题描述】:

考虑这段代码:

function x(){
    console.log(y);
}
x();
var t = x();
console.log(t);

这将引发错误。但是,如果您在函数内注释第一个 console.log,它将起作用并打印 undefined

这种行为的解释是什么。

谢谢。

【问题讨论】:

  • 函数 x 中的 console.log 试图打印出不存在的东西,但是 console.log(t) 打印出函数返回,这是未定义的(不返回)
  • 你需要阅读一点关于 javascript 变量、函数和作用域的知识 :)
  • 发生的错误应该告诉你为什么Uncaught ReferenceError: y is not defined你可以很容易地看到它,甚至搜索它的含义。这个问题没有显示任何研究工作。
  • @Tareq 我目前正在在线阅读 speakjs。这是一本好书,但并不总是像我希望的那样清晰。如果您有更好的 javascript 主题资源,请提供给我。

标签: javascript undefined


【解决方案1】:

var t 声明一个变量。它 (t) 存在,但它具有 undefined 值。当您阅读它时,您会得到 undefined 值(x() 返回该值,因为该函数中没有 return 语句)。

y 没有在任何地方声明。当你尝试阅读它时,你会得到一个ReferenceError。 (这会中止进一步的处理,因此脚本的结果不会运行,并且永远不会到达 console.log(t) 语句)。

【讨论】:

  • 它没有说在 IE 中,它只是说 y 是未定义的,这就是我感到困惑的原因。但是在 Chrome 中,它更清晰,并且像你说的那样报告了 ReferenceError。
  • 它在我的 IE 副本中说:i.imgur.com/lmYkxLy.png
  • 我只得到了 SCRIPT5009 行。
  • @admdev — 您使用的是不再从 Microsoft 获得安全更新的旧版 IE?
  • 我使用的是 11.125.16299.0
猜你喜欢
  • 2017-05-29
  • 1970-01-01
  • 2016-09-18
  • 2020-06-17
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
  • 2023-03-09
  • 2019-09-18
相关资源
最近更新 更多