javascript - js中for循环输出值疑惑
伊谢尔伦
伊谢尔伦 2017-04-11 12:46:47
[JavaScript讨论组]
var a = [];
for (var i = 0; i < 10; i++) {
  a[i] = function () {
    return console.log(i)
    // alert(i);
  };
}
a[1]()
// 10

代码如上所示

想不明白,为什么输出的不是9,而是10
不是for循环10次,i的值从09吗?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(4)
怪我咯

首先为什么不是9是10 9的那次循环结束不是要i++吗。i就等于10了呀!
第二,a数组里面放的是函数,函数只有在调用的时候才会被执行。你在for循环中根本就没有呗执行啊
只有在最后a[1]()这才被调用执行,此时i为10,所以是10

巴扎黑

for循环执行的步骤你弄错了`for(var i = 0;i<10;i++){
内容
}`
第一步:初始条件,第二步:判断内容,第三步:判断条件成立执行循环体里的内容,第四步:最后一步才进行累加!!!所以当条件i = 9时条件还成立执行了循环体的内容后执行了for循环的第四步累加。当i=10的时候不符合循环条件跳出循环,所以为10.

巴扎黑

不明白,那就把代码换成另一种姿势,你就明白了。

var a = [];
for (var i = 0; i < 10; ) {
  i++
  a[i] = function () {
    return console.log(i)
    // alert(i);
  };
}
a[1]()
巴扎黑

你的i是一个全局的变量,当你执行a[i]();的时候循环已经完成,i = 10;而执行函数 function(){console.log(i)}在当前函数的作用域中没有i,就回找到父级的i也就是10打印出来。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号