当i = 10时,为什么输出“未定义”,因为(i = 0; i <10; i ++)?

时间:2013-05-21 22:02:50

标签: javascript for-loop

我正在学习Javascript,在我的以C ++为中心的编程课的最后一个星期后,并且在C++中循环将在i!<10时停止,但我假设它继续因为我在9之后得到输出,所以进入JS。

我在Chrome中使用JS控制台

代码和输出是:

for (i=0; i<10; i++){
console.log("This is the number" + i.toString());
}

This is the number0
This is the number1
This is the number2
This is the number3
This is the number4
This is the number5
This is the number6
This is the number7
This is the number8
This is the number9
undefined

5 个答案:

答案 0 :(得分:3)

undefined是为了你在运行这段代码时没有返回任何东西,你没有任何返回值,并且控制台在运行它之后评估你的代码并显示返回值..在运行时你写输出像

This is the number0
This is the number1
.
.
This is the number9

之后

您的代码的控制台写入返回值,这里未定义

答案 1 :(得分:1)

最终undefinedfor循环的返回值 - 它没有返回值。当您在控制台中键入内容时,将打印其结果。就像我说的那样,for循环的结果是undefined

尝试将其放入控制台:

var a = "asdf";

应打印undefined。但是当你输入:

a

应打印"asdf"。那是因为var语句的返回值没什么。

答案 2 :(得分:0)

尝试:

for(var i = 0;i < 10;i++){ /*your stuff here*/ }

在变量var

之前添加i

答案 3 :(得分:0)

以下是正确的方法,C ++和Javascript类似,您的代码应该有问题:

for (i=0; i<10; i++){
  console.log(i);
}

这是jsfiddle

enter image description here

答案 4 :(得分:0)

返回的值会立即显示在Chrome JS控制台中的结果之后,就像node.js交互模式和许多其他现代JavaScript控制台一样。您应该忽略最终的undefined,因为它与您的循环无关,它在9处停止。如果您不相信我,请在HTML文件而不是控制台中尝试。

一些注意事项:在使用var之前,应始终将var添加到任何未定义的变量中。在您的示例中,您使用i而不首先定义它。如果这样做,那么变量将在全局命名空间中,并可能在另一个上下文或类中覆盖另一个i实例。一个例子:

function foo() {
    console.log(i);    // i => window.i
}

function bar() {
    var i = 0;         // i => window.bar.i
    console.log(i);
}

for (i=0; i<10; i++) { // loop is using window.i because no var declaration
    console.log(i);    // will log 0 to 9
}

foo();  // will log 9
bar();  // will log 0