博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript闭包中循环问题
阅读量:5878 次
发布时间:2019-06-19

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

如下的html,为什么每次输出都是5,而不是点击每个p,就alert出对应的1,2,3,4,5。                       
闭包演示

产品一

产品二

产品三

产品四

产品五

 

 

 

解决方式有两种,

1、将变量 i 保存给在每个段落对象(p)上

function init() {           var pAry = document.getElementsByTagName("p");           for( var i=0; i

2、将变量 i 保存在匿名函数自身 

function init2() {           var pAry = document.getElementsByTagName("p");           for( var i=0; i

再增加3种

 

3、加一层闭包,i以函数参数形式传递给内层函数

function init3() {           var pAry = document.getElementsByTagName("p");           for( var i=0; i

4、加一层闭包,i以局部变量形式传递给内存函数

function init4() {           var pAry = document.getElementsByTagName("p");           for( var i=0; i

5、加一层闭包,返回一个函数作为响应事件(注意与3的细微区别)

function init5() {           var pAry = document.getElementsByTagName("p");           for( var i=0; i

又有一种方法

6、用Function实现,实际上每产生一个函数实例就会产生一个闭包

 

function init6() {             var pAry = document.getElementsByTagName("p");             for( var i=0; i

 

再增加一种

7、用Function实现,注意与6的区别

function init7() {         var pAry = document.getElementsByTagName("p");         for( var i=0; i

 

转载于:https://www.cnblogs.com/hutuzhu/p/3510991.html

你可能感兴趣的文章
[翻译]用 Puppet 搭建易管理的服务器基础架构(3)
查看>>
Android -- AudioPlayer
查看>>
Python大数据依赖包安装
查看>>
Android View.onMeasure方法的理解
查看>>
Node.js 爬虫初探
查看>>
ABP理论学习之仓储
查看>>
NestJS 脑图
查看>>
我的友情链接
查看>>
Html body的滚动条禁止与启用
查看>>
Tengine新增nginx upstream模块的使用
查看>>
多媒体工具Mediainfo
查看>>
1-小程序
查看>>
CentOS图形界面和命令行切换
查看>>
HTML5通信机制与html5地理信息定位(gps)
查看>>
Mind_Manager_2
查看>>
手动升级 Confluence - 规划你的升级
查看>>
汽车常识全面介绍 - 悬挂系统
查看>>
电子政务方向:We7.Cloud政府云门户
查看>>
虚拟机Centos7连接Internet
查看>>
ansible 基本操作(初试)
查看>>