在javascript中产生以下代码输出的原因是什么?
What's the reason for the below code output in javascript
for (var a=0; a<5; a++)
{
setTimeout(function(){
alert(a);
}, 0);
}
javascript中的上述代码提示我输出5,5倍,实际上我期望的输出是0,1,2,3,4,但它向我显示了5,5,5,5的输出。为什么会这样呢?
除此之外,请给我解释一下javascript中上下文和作用域的概念,我总是不能理解它,通过许多从网络上阅读的例子。
在setTimeout()
中,您的alert()
是异步调用的,因此很可能for
循环已经在alert()
执行之前完成。
相关文章:
- 这是什么 ==- javascript 运算符
- 我的单元测试选项是什么
- 打破承诺链的好方法是什么
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Javascript中的空白是什么
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 在JavaScript中拆分日期字符串的更好方法是什么
- 将jQuery.ech()方法转换为本地JavaScript抽象的最佳方法是什么
- 有谁知道这行代码的输出是什么?$.get(“http://192.168.4.1:80/”, {pin:p}.
- 这里的节点输出是什么
- 配置早午餐以从一个模板文件输出多个 HTML/JS 文件的正确方法是什么?
- 保存富文本(所见即所得输出)的最佳方法是什么
- 在Javascript中,从2D数组的2层循环中获得输出的最佳方式是什么
- element.classList的输出是什么?
- 在javascript中产生以下代码输出的原因是什么?
- 如何解释输出-浏览器日志?下面代码中的确切错误原因是什么?我用的是旧的angular.min.js吗?
- window.print()的输出究竟是什么?
- 从JSON元素的内容构造URL以避免输出中出现编码字符的正确方法是什么?
- 用于下拉菜单的正确焦点和焦点输出javascript函数是什么
- 这个for in循环是什么意思,为什么它只输出0和1