输出数组时Javascript未定义的消息

时间:2016-08-30 14:52:03

标签: javascript

我在JavaScript的第一天,我有一个我不明白的事情。我有这段代码:

var a = [1, 2, 3, 5, 8];
var b = [];
for(var i=0; i<a.length; i++){
    b.push(a[i]);
}
console.log(b);

输出是:

[ 1, 2, 3, 5, 8 ]
=> undefined

请您解释一下undefined的含义?

5 个答案:

答案 0 :(得分:5)

你正在调用一个函数console.log并且函数没有重新调整任何值,那么它是未定义的。

所以在这种情况下

console.log显示数组b,最后显示该函数返回的值。在这种情况下,没有什么。因此将显示未定义。

答案 1 :(得分:4)

您可能正在浏览器的控制台中运行此功能。它在调用class Post implements ResourceInterface { use TimestampableEntity; 后打印返回的值。

Console output

console.log()返回console.log()undefined是另一个问题。可以这么说,就这个实例而言,它是一个没有明确undefined语句的函数返回的默认值。

你问:

  

所以基本上每当我调用一个返回void的函数时(在此   case console.log())我会得到这个评估,对吗?未定义。

不要混淆returnvoid。他们不一样。您甚至无法返回undefined,它是运营商的关键字:void operator。如果您尝试将其返回,则会出现语法错误。

如果您定义的函数未提供明确的void,则默认情况下它将返回return

undefined

function foo(){ var a = 2 + 2; } var bar = foo(); // bar has the value "undefined" 具有讽刺意味,因为它是一个特殊的定义值。您可以与它进行比较,您可以为其分配内容,您可以明确地返回它。这是一个特殊的假值。

答案 2 :(得分:2)

您收到undefined,因为您正在编写的JavaScript中没有returned

即使你只是在控制台中写这个:

console.log('Bar');

您会看到undefined;

但是,如果你在控制台中运行它

function returnSomething() {
    return 'Hello';
}
returnSomething();

你会看到“你好”,不再看到undefined

答案 3 :(得分:0)

在这种情况下,&#34; undefined&#34;只是意味着脚本已经完成运行。它看起来像你的程序做它应该做的事情,它填充&#39; b&#39;并将其记录到控制台。完成后,脚本完成并输出&#34; undefined&#34;因为它已经完成了。

答案 4 :(得分:0)

当您在控制台中执行操作时,将记录您执行的每一行的结果。

例如,如果您在控制台中运行var x = 5;,您还会看到未定义的。那是因为var x = 5;

没有输出

运行后,如果您在控制台中运行x = 9;,则会在该行后面看到9。这意味着x = 9的输出是9(这只是JavaScript的创建者所决定的,但有用的知识)。

就像创建一个变量不输出任何东西一样,如果你调用一个不返回任何东西的函数,你也会看到未定义的打印。

console.log是一个不返回任何内容的函数,但它是一个向控制台添加文本的函数。所以你看到的第一件事是console.log(b)输出的文本(你的数组),第二行是函数的输出(未定义)。

希望这会有所帮助:)