var命令疑问求教

bala7756 2017-08-27 10:45:20
<div id="a1"></div>
<div id="a2"></div>
<script type="text/javascript">
var a=[],b=[];
for(var i=0;i<10;i++){
a[i] = function(){
document.getElementById('a1').innerHTML = i;
};
b[i] = i;
}
a[6]();
document.getElementById('a2').innerHTML = b[6];
</script>

为什么 a[6]() 输出结果是10,而b[6]输出结果是6?
...全文
155 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Go 旅城通票 2017-08-27
  • 打赏
  • 举报
回复
var没有块作用域,所以a存储的匿名函数里引用到的i是最后i循环后的值,不是当时循环到的值 b不用说了吧,就是给数组赋值而已,i不是引用类型,所以b直接存当时i的值 for循环中var改为let,let有块作用域,就是会是当前的i值

Web开发学习资料推荐
通过Access-Control-Allow-Origin控制允许ajax跨域请求的域名
javascript解码读取二维码信息

87,921

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧