js闭包可以解决哪些问题(JavaScript中let避免闭包造成问题)
类别:编程学习 浏览量:211
时间:2021-09-30 00:21:17 js闭包可以解决哪些问题
JavaScript中let避免闭包造成问题关于 let 避免闭包带来的问题利用面向对象思想完成买家信息删除功能,每一条信息包含:
姓名
电话
电话号码
省份
实现以下要求:
不能借用任何第三方库,需要使用原生代码实现。
结合给出的基本代码结构,在下方2处code here补充代码,完成买家信息的删除功能,注意此页面要在手机上清晰显示。
js代码可以任意调整,例如和使用es6代码完成。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <!--code here--> <title>demo</title> <style> * { padding: 0; margin: 0; } .head, li li { display: inline-block; width: 70px; text-align: center; } li .id, li .sex, .id, .sex { width: 15px; } li .name, .name { width: 40px; } li .tel, .tel { width: 90px; } li .del, .del { width: 15px; } ul { list-style: none; } .user-delete { cursor: pointer; } </style> </head> <body> <li id="J_container"> <li class="record-head"> <li class="head id">序号</li> <li class="head name">姓名</li> <li class="head sex">性别</li> <li class="head tel">电话号码</li> <li class="head province">省份</li> <li class="head">操作</li> </li> <ul id="J_List"> <li> <li class="id">1</li> <li class="name">张三</li> <li class="sex">男</li> <li class="tel">13788888888</li> <li class="province">浙江</li> <li class="user-delete">删除</li> </li> <li> <li class="id">2</li> <li class="name">李四</li> <li class="sex">女</li> <li class="tel">13788887777</li> <li class="province">四川</li> <li class="user-delete">删除</li> </li> <li> <li class="id">3</li> <li class="name">王二</li> <li class="sex">男</li> <li class="tel">13788889999</li> <li class="province">广东</li> <li class="user-delete">删除</li> </li> </ul> </li> <script> // 此处也可换成ES6的写法 function Contact() { this.init(); } // your code here </script> </body> </html>
code1
<meta name="viewport" content="width = device-width,initial-scale=1">
code2 ( 别人的代码 )
Contact.prototype.init = function () { console.log("Test"); var li = document.getElementsByClassName("user-delete"); var ul = document.querySelector("#J_List"); var list = ul.querySelectorAll("li"); for (var i = 0; i < li.length; i++) { (function (i) { li[i].onclick = function () { list[i].remove(); console.log(i); } })(i); } } new Contact();
其中
(function (i) { li[i].onclick = function () { list[i].remove(); console.log(i); } })(i);
这段立即执行函数没看懂意义
我的代码
Contact.prototype.init = function () { let li = document.getElementsByClassName("user-delete"); let ul = document.querySelector("#J_List"); let list = ul.querySelectorAll("li"); for (let i in li) { li[i].onclick = function () { list[i].remove(); console.log(i); } } } new Contact();
后来想起来是为了避免闭包带来的问题,这一段廖雪峰老师讲过,但是一时没有想起来,详见 廖雪峰闭包
但是我的代码运行起来也是没有任何问题的,因为当时没有块级作用域的说法,但是现在可以用 let 来避免这个问题。所以如果 i 是用 let 来声明的话就可以不用立即执行函数。并且写代码应当避免用 var,改用 let。还有一个,避免使用 for(let i =0;condition;++i) 这种语句,尽量使用 for...in... 一些好的习惯要养成。
到此这篇关于JavaScript中let避免闭包造成问题的文章就介绍到这了,更多相关JavaScript中let闭包问题内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
您可能感兴趣
- 生成随机数javascript(JavaScript实现随机生成验证码及校验)
- web前端快速入门之html(Web前端开发规范2017HTML/JavaScript/CSS)
- javascript将字符串转换成数组(如何将JavaScript将数组转为树形结构)
- js数组去重的十种方法(JavaScript常用数组去重实战源码)
- html注册表单验证代码(JavaScript+html实现前端页面随机二维码验证)
- js防抖用法(JavaScript的防抖和节流案例)
- js tab栏案例(JavaScript实现Tab栏切换特效)
- canvas实现字体粒子爆炸特效(javascript canvas实现雨滴效果)
- javascript 函数生命周期(JavaScript sleep睡眠函数的使用)
- javascript 自带格式化时间(JavaScript内置日期、时间格式化时间实例代码)
- js原生tab栏切换(JavaScript实现简易tab栏切换案例)
- js闭包可以解决哪些问题(JavaScript中let避免闭包造成问题)
- js 图片编辑处理库(javascript input图片上传及预览,FileReader预览图片)
- javascript:void(0)的用法
- qt和js相互调用(QT与javascript交互数据的实现)
- javascript设置鼠标(JavaScript实现鼠标控制自由移动的窗口)
- 冬季养殖这6种阴生植物,方便又好养,你家有么(冬季养殖这6种阴生植物)
- 阴生植物为什么不怕照不到阳光(阴生植物为什么不怕照不到阳光)
- 阴生环境 耐阴地被植物,你知道哪些(阴生环境耐阴地被植物)
- 常见的喜阴植物有哪些 养室内盆栽就在这里选(常见的喜阴植物有哪些)
- 这8种耐阴植物,营造阴生植物花境,也是一个不错的选择(营造阴生植物花境)
- 览邦G08 Plus SMART WATCH 测评⑱ 全独立这才是智能手表该有的样子(览邦G08PlusSMART)
热门推荐
- docker 镜像id修改(Docker Alpine镜像时区问题完美解决方案)
- dropdownlist绑定枚举值
- 面试时问如何理解团队合作该怎么回答
- php编程输出菱形(php输出反斜杠的实例方法)
- python 元组基本操作(Python元组知识点总结)
- supersocket分布式架构(ServerSocket默认邦定IP实现过程详解)
- 解释php中可变变量并举例说明(PHP Primary script unknown 解决方法总结)
- python图文生成器(Python生成器的使用方法和示例代码)
- javascript登录转注册界面(JavaScript实现登录窗体)
- python里import的是什么(python中import与from方法总结推荐)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9