javascript - 为什么在定时提示后不打印变量 "nyFrukt"

标签 javascript arrays document.write

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);

关于javascript - 为什么在定时提示后不打印变量 "nyFrukt",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28299049/

相关文章:

javascript - 根据子输入控制父元素 :focus

java - 为什么我的 javascript 数组从 java 对象获取未定义的值?

javascript - 在没有标准键的情况下过滤 Javascript 对象数组的最有效方法

javascript - 是否可以将 domparser 元素更改为字符串?

javascript - 在 document.write() 之前获取文档 HTML;

javascript - JavaScript花絮如何将远程小部件插入到页面上?

javascript - jQuery 销毁 Meteor 中自定义 Polymer 事件的 `detail`

javascript - 在 js 模块模式中使用常规函数而不是函数表达式有什么含义?

javascript - 当 href 标签中的 onMouseOver 时,如何在 jQuery 中分配动态元素 id?

ruby - 合并和合并哈希数组