JS学习笔记之闭包小案例分析


Posted in Javascript onMay 29, 2019

本文实例讲述了JS学习笔记之闭包小案例。分享给大家供大家参考,具体如下:

直接上代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <title>Document</title>
</head>
<style type="text/css">
  *{
    list-style:none;
  }
  ul{
    display:flex;
    flex-wrap:wrap;
  }
  li{
    width: 20%;
    text-align: center;
  }
  img{
    width: 90%;
    padding:5%;
    border:1px solid #ccc;
    border-radius:5px;
  }
</style>
<body>
<ul>
  <li><img src="http://www.nixiaolei.com/pizza/dist/pizza.jpg" alt=""><p><button>赞(1)</button></p></li>
  <li><img src="http://www.nixiaolei.com/pizza/dist/pizza.jpg" alt=""><p><button>赞(1)</button></p></li>
  <li><img src="http://www.nixiaolei.com/pizza/dist/pizza.jpg" alt=""><p><button>赞(1)</button></p></li>
  <li><img src="http://www.nixiaolei.com/pizza/dist/pizza.jpg" alt=""><p><button>赞(1)</button></p></li>
</ul>
</body>
<script type="text/javascript">
function my$(tagName){
  return document.getElementsByTagName(tagName);
}
var btnObjs=my$("button");
function bb(){
  var value=2;
  return function(){
    var target=event.target
    console.log(this)
    this.innerHTML="赞("+(value++)+")";
  }
}
for(var i=0;i<btnObjs.length;i++){
  btnObjs[i].onclick=bb()
}
</script>
</html>

函数被返回后 其中的value 并未被释放,所以累加

闭包后,作用域链会被延长

闭包的作用,缓存数据,是缺点也是优点

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JQuery 解析多维的Json数据格式
Nov 02 Javascript
网页源代码保护(禁止右键、复制、另存为、查看源文件)
May 23 Javascript
JavaScript中的分号插入机制详细介绍
Feb 11 Javascript
使用C++为node.js写扩展模块
Apr 22 Javascript
微信小程序 图片宽高自适应详解
May 11 Javascript
ES6新特性之类(Class)和继承(Extends)相关概念与用法分析
May 24 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
Oct 25 Javascript
Vue 中使用vue2-highcharts实现曲线数据展示的方法
Mar 05 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
Mar 19 Javascript
javascript事件监听与事件委托实例详解
Aug 16 Javascript
Vue中错误图片的处理的实现代码
Nov 07 Javascript
基于原生js实现判断元素是否有指定class名
Jul 11 Javascript
JS学习笔记之贪吃蛇小游戏demo实例详解
May 29 #Javascript
elementUI select组件value值注意事项详解
May 29 #Javascript
elementUI select组件使用及注意事项详解
May 29 #Javascript
通过vue手动封装on、emit、off的代码详解
May 29 #Javascript
el-select数据过多懒加载的解决(loadmore)
May 29 #Javascript
JS学习笔记之原型链和利用原型实现继承详解
May 29 #Javascript
vue读取本地的excel文件并显示在网页上方法示例
May 29 #Javascript
You might like
ThinkPHP中处理表单中的注意事项
2014/11/22 PHP
浅谈json_encode用法
2015/03/05 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
Zend Framework分发器用法示例
2016/12/11 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
PHP加MySQL消息队列深入理解
2021/02/27 PHP
javascript 兼容FF的onmouseenter和onmouseleave的代码
2008/07/19 Javascript
JavaScript脚本性能优化注意事项
2008/11/18 Javascript
JS 面向对象之神奇的prototype
2011/02/26 Javascript
jquery中:input和input的区别分析
2011/07/13 Javascript
JS实现的省份级联实例代码
2013/06/24 Javascript
jquery iframe操作详细解析
2013/11/20 Javascript
jQuery在iframe中无法弹出对话框的解决方法
2014/01/12 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
js获取表格的行数和列数的方法
2015/10/23 Javascript
Bootstrap Paginator分页插件使用方法详解
2016/05/30 Javascript
微信小程序module.exports模块化操作实例浅析
2018/12/20 Javascript
在vue项目中使用sass语法问题
2019/07/18 Javascript
jQuery提示框插件SweetAlert用法分析
2019/08/05 jQuery
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
[56:13]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第一场 1月10日
2021/03/11 DOTA
在Windows8上的搭建Python和Django环境
2014/07/03 Python
python简单分割文件的方法
2015/07/30 Python
Python简单生成8位随机密码的方法
2017/05/24 Python
Python魔法方法功能与用法简介
2019/04/04 Python
通过PYTHON来实现图像分割详解
2019/06/26 Python
Pytorch释放显存占用方式
2020/01/13 Python
Django设置Postgresql的操作
2020/05/14 Python
html5中的input新属性range使用记录
2014/09/05 HTML / CSS
Rag & Bone官网:瑞格布恩高级成衣
2018/04/19 全球购物
用C#语言写出与SQLSERVER访问时的具体过程
2013/04/16 面试题
电大自我鉴定范文
2013/10/01 职场文书
社区禁毒工作方案
2014/06/02 职场文书
2014年流动人口工作总结
2014/11/26 职场文书
话题作文之成长
2019/12/09 职场文书
nginx的zabbix 5.0安装部署的方法步骤
2021/07/16 Servers