控制台中的奇怪结果:将“未定义”附加到输出

And*_*dre 0 javascript

我正在尝试完成 Odin 项目并看到一个有趣的控制台错误

function repeat(string, number) {
  var finalst;

  for (i = 0; i < number; i++) {
    finalst += string;

  }
  return finalst;
}
console.log(repeat("hey", 3));
Run Code Online (Sandbox Code Playgroud)

控制台中的结果是“undefinedheyheyhey”。它是如何显示的,为什么?

Maj*_*awi 5

你需要像这样初始化它var finalst = "";

function repeat(string, number) {
  var finalst = ""; //change this

  for (i = 0; i < number; i++) {
    finalst += string;

  }
  return finalst;
}
console.log(repeat("hey", 3));
Run Code Online (Sandbox Code Playgroud)

如果你不这样做,它的初始值将是undefined,这将导致undefined+ hey+ hey+hey在你的情况下:

var finalst;
console.log(finalst);
for (i = 0; i < 3; i++) {
    finalst += "hey";
}
console.log(finalst);
Run Code Online (Sandbox Code Playgroud)