var frukt = ["banan", "Äpple", "Apelsin"];


document.write("<p>Din lista med frukt inehåller för närvarande " + frukt + ".</p>");
document.write("<p>Den första frukten i listan är " + frukt[0] + ".</p>");
document.write("<p>Den nya frukten i listan är " + frukt[frukt.length - 1] + ".</p>");


//上面的代码工作完美,但是下面的计时器却没有

setTimeout(function () { var nyFrukt = prompt("Vad är den nya frukten?"); }, 3000);


//下面的document.write不会打印“ nyFrukt”

document.write("<p>Den nya frukten i listan är " + nyFrukt + ".</p>");

最佳答案

JavaScript使用函数作用域,您的变量nyFrukt在setTimeout函数中使用的匿名函数内声明,因此,当您尝试在以下document.write函数中引用它时,它就不在作用域内。

只需在共享范围内声明nyFrukt,它将起作用:

setTimeout(function () {
  var nyFrukt = prompt("Vad är den nya frukten?");
  document.write("<p>Den nya frukten i listan är " + nyFrukt + ".</p>");
}, 3000);

09-07 21:04