当前位置: 首页 > 面试题库 >

为什么此JavaScript代码在控制台上显示“未定义”?

冯卜鹰
2023-03-14
问题内容

我有以下JavaScript代码:

var counter = 0;
function printCounter(){
   console.log("counter=" + ++counter);
   setTimeout(printCounter, 1000);
}
printCounter();

我希望它应该输出以下输出:

counter=1
counter=2
counter=3
...

但是,它打印以下内容:

counter=1
undefined  // <-- Notice this "undefined"
counter=2
counter=3
...

为什么在第一次迭代后打印“未定义”?重要说明: 当在JavaScript控制台中执行代码时,我 才会
看到这种行为。如果它是页面的一部分,则可以正常工作。


问题答案:

这是因为“ printCounter()”函数本身返回undefined。那是控制台告诉您表达式的结果。

通过添加return "Hello Anton!";到末尾来更改“ printCounter()” :-)

编辑 -说它“返回undefined” 有点混乱;确实,它没有明确的回报,但是效果是一样的。



 类似资料:
  • 问题内容: var x int done := false go func() { x = f(…); done = true } while done == false { } 这是Go代码。我的恶魔告诉我,这是UB代码。为什么? 问题答案: Go Memory Model不保证该程序将始终遵守在goroutine中写入x的值。go常规销毁 部分中提供了一个类似的错误程序作为示例。 在本节中,G

  • 问题内容: 它们都没有解释为什么当我声明如下变量时,JavaScript控制台会打印 未定义的 原因: 问题答案: 它打印此表达式的结果-是 。是的, 它本身就是一个有效的表达式。 实际上,您宁可为书写时为什么打印或类似的东西而感到开心。如果语句已处理,它也会打印。实际上,如果还有另一条带有某些“真实”结果的语句,则似乎忽略了所有and 声明(!)语句: 现在,我想背后的真正原因是行为的语句,描述

  • 我打开了开发人员控制台,查看了脚本,看看发生了什么,我看到它显示了所有内容,我的数据库名称,我正在访问的集合等等。 就像我说的,我是新来的,所以也许我错过了什么。

  • 问题内容: 这是我的代码: 当运行它输出。我究竟做错了什么? 问题答案: 您正在调用一个没有隐式字符串表示形式的实际数组。 为了输出数组的内容,你可以使用,或功能或自定义输出,你可以使用,甚至是循环:

  • 问题内容: 在Java中,我尝试将String写入控制台。字符串的长度为20166个字符。将字符串打印到控制台后,仅出现字符串的后半部分。 整个字符串是一长行: 看起来像什么: 从一开始就有很多空格(应该是字母数字字符),然后是其余的字符串。 我试图将控制台编码从默认更改为UTF-16和UTF-8,但这没有帮助。 我要输出的字符串是从特定网页(http://docs.jquery.com/Tuto