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的一些特性和用法整理小结
Jan 13 Javascript
javascript:文字不间断向左移动的实例代码
Aug 08 Javascript
Javascript连接多个数组不用concat来解决
Mar 24 Javascript
在for循环中length值是否需要缓存
Jul 27 Javascript
学习javascript面向对象 实例讲解面向对象选项卡
Jan 04 Javascript
基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)
Sep 02 Javascript
js模式化窗口问题![window.dialogArguments]
Oct 30 Javascript
2种在vue项目中使用百度地图的简单方法
Sep 28 Javascript
详解Next.js页面渲染的优化方案
Jan 27 Javascript
解决Antd 里面的select 选择框联动触发的问题
Oct 24 Javascript
Vue+Spring Boot简单用户登录(附Demo)
Nov 12 Javascript
详解vue中v-for的key唯一性
May 15 Vue.js
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
php 调用远程url的六种方法小结
2009/11/02 PHP
使用php统计字符串中中英文字符的个数
2013/06/23 PHP
php中请求url的五种方法总结
2017/07/13 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
2018/03/15 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
2018/10/23 PHP
jQuery版仿Path菜单效果
2011/12/15 Javascript
解决遍历时Array.indexOf产生的性能问题
2012/07/03 Javascript
优化Jquery,提升网页加载速度
2013/11/14 Javascript
获取select元素被选中的文本内容的js代码
2014/01/29 Javascript
jQuery+ajax实现鼠标单击修改内容的方法
2014/06/27 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
element-ui 关于获取select 的label值方法
2018/08/24 Javascript
详解Webpack loader 之 file-loader
2018/11/07 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
微信小程序实现吸顶特效
2020/01/08 Javascript
Python3 入门教程 简单但比较不错
2009/11/29 Python
详解Python发送邮件实例
2016/01/10 Python
Python实现连接两个无规则列表后删除重复元素并升序排序的方法
2018/02/05 Python
Django中redis的使用方法(包括安装、配置、启动)
2018/02/21 Python
django请求返回不同的类型图片json,xml,html的实例
2018/05/22 Python
Python Series从0开始索引的方法
2018/11/06 Python
Python3爬楼梯算法示例
2019/03/04 Python
python 实现图片上传接口开发 并生成可以访问的图片url
2019/12/18 Python
python名片管理系统开发
2020/06/18 Python
Python 忽略文件名编码的方法
2020/08/01 Python
python更新数据库中某个字段的数据(方法详解)
2020/11/18 Python
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
塑料制成的可水洗的编织平底鞋和鞋子:Rothy’s
2018/09/16 全球购物
留守儿童工作方案
2014/06/02 职场文书
幼儿园辞职信范文
2015/02/27 职场文书
和领导吃饭祝酒词
2015/08/11 职场文书
Linux安装Nginx步骤详解
2021/03/31 Servers
MySQL官方导出工具mysqlpump的使用
2021/05/21 MySQL