为什么这段代码最后打印出`undefined`?

时间:2017-07-19 16:51:51

标签: javascript

我在Chrome的开发者工具javascript控制台中运行以下代码,

var solution = 1;
for(var i = 1; i <= 12; ++i)
    solution *= i;
console.log(solution.toString());

我得到以下输出:

479001600
undefined

当我删除最后一行,即console.log(solution.toString());时,我只获得了479001600。会发生什么?

2 个答案:

答案 0 :(得分:5)

undefined只是控制台告诉你声明的方式:

console.log(solution.toString());

本身不返回一个值(它输出一个值,但不返回一个值)。实际代码执行时不必担心,因为它是开发人员控制台的特定行为。

另一个例子是,如果在控制台中键入:5 + 6,它将在下一个控制台行上报告11,因为控制台总是要报告从刚刚执行的语句返回的任何值

答案 1 :(得分:1)

Google Chrome中的控制台将始终返回上次执行的语句的值。

由于你在控制台中的最后一个声明是

console.log()

没有返回任何显示'undefined'的值;

尝试

var a=[];a.push(5);

它将在下一行显示1,因为push方法返回新形成的数组的长度