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将数组转为树形结构)
- js使用canvas(JavaScript canvas实现七彩时钟效果)
- 在vs中设置Javascript的智能提示
- javascript中的this判定(Javascript中函数分类&this指向的实例详解)
- 在html中使用javascript实例代码(原生 JS+CSS+HTML 实现时序图的方法)
- javascript 数据分析(利用JavaScript差集实现一个对比小工具)
- html注册表单验证代码(JavaScript+html实现前端页面随机二维码验证)
- js三级联动列表(基于JavaScript实现年月日三级联动)
- 使用javascript数组循环(JavaScript数组reduce方法的语法与实例解析)
- js tab栏案例(JavaScript实现Tab栏切换特效)
- javascript编程中的promise(JavaScript如何利用Promise控制并发请求个数)
- javascript函数工具有哪些(如何让你的JavaScript函数更加优雅详解)
- javascript 自带格式化时间(JavaScript内置日期、时间格式化时间实例代码)
- JavaScript中call、apply、bind实现原理详解(JavaScript中call、apply、bind实现原理详解)
- js闭包可以解决哪些问题(JavaScript中let避免闭包造成问题)
- js数组去重的十种方法(JavaScript常用数组去重实战源码)
- Top 3 JSHS《运动与健康科学 英文 》跻身SCI体育学期刊世界前三(Top3JSHS运动与健康科学)
- 体坛传媒LOGO全新升级,多元发展迈出坚实步伐(体坛传媒LOGO全新升级)
- 超撩人治愈的绝美水彩,原来出自她之手 一笔一画令无数人沉醉(超撩人治愈的绝美水彩)
- 新手的勾线(新手的勾线)
- ()
- 书法欣赏 宋.志南诗《绝句》(宋.志南诗绝句)
热门推荐
- laravel 框架关键技术解析(在laravel框架中实现封装公共方法全局调用)
- docker安装java8(docker安装java环境的实现步骤)
- html5音频处理(recorder.js 基于Html5录音功能的实现)
- mysql为什么优选innodb(如何区分MySQL的innodb_flush_log_at_trx_commit和sync_binlog)
- mysql什么是慢查询(MySQL慢查询的坑)
- php把当前网页生成pdf(php转换上传word文件为PDF的方法基于COM组件)
- 如何正常查看mysql存储数据文件(Mysql文件存储图文详解)
- docker-compose绑定端口失效(docker-compose创建网桥,添加子网,删除网卡的实现)
- php脚本通过文件路径批量上传文件(php遍历目录下文件并按修改时间排序操作示例)
- mysql server安装图解教程(mysql容器之间的replication配置实例详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9