博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一段js代码的分析
阅读量:4687 次
发布时间:2019-06-09

本文共 487 字,大约阅读时间需要 1 分钟。

1 var a = [];2 for (var i = 0; i < 10; i++) {3   a[i] = function () {4     console.log(i);5   };6 }7 a[6]();

输出结果是:10;

 

分析:熟悉js的都知道,上面代码中的i是var声明的,是全局变量。因此这段代码只有一个i变量。

function () {    console.log(i); };

这个方法内部有console.log(i);初学者很容易误认为每一次循环会打印一次i。这显然对函数理解不过关。这里函数这是声明和定义,只有当函数被调用的时候,函数体内部的语句才会执行。

所以最后一句a[6]()才执行了console.log(i)。打印i。由于循环结束,i的值是10,并且每一个a[i]都指向函数function(){console.log(i)},因此a[6]()就是执行function(){console.log(i)},输出打印结果10.

转载于:https://www.cnblogs.com/dotnetHui/p/9341373.html

你可能感兴趣的文章
[转]MySQL数据库管理常用命令
查看>>
Git Stash用法
查看>>
线程与同步
查看>>
react 路由跳转刷新页面参数消失
查看>>
Android 读取文件内容
查看>>
sql server 2008学习8 sql server存储和索引结构
查看>>
Jquery radio选中
查看>>
《Visual C++ 2010入门教程》系列二:安装、配置和首次使用VS2010
查看>>
P1351 联合权值[鬼畜解法]
查看>>
Best Time to Buy and Sell Stock with Cooldown_LeetCode
查看>>
nginx+tomcat反向代理
查看>>
postgressql数据库中limit offset使用
查看>>
linux下如何添加一个用户并且让用户获得root权限
查看>>
搭建Extjs框架(二)
查看>>
NSDateFormatter的说明
查看>>
测试思想-集成测试 关于接口测试 Part 2
查看>>
测试思想-测试设计 史上最详细测试用例设计实践总结 Part1
查看>>
windows下mysql密码忘了怎么办?【转】
查看>>
java文件上传和下载
查看>>
SQL联合查询(内联、左联、右联、全联)的语法(转)
查看>>