返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript中let避免闭包造成问题
  • 666
分享到

JavaScript中let避免闭包造成问题

2024-04-02 19:04:59 666人浏览 薄情痞子
摘要

关于 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 div {
            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>
<div id="J_container">
    <div class="record-head">
        <div class="head id">序号</div>
        <div class="head name">姓名</div>
        <div class="head sex">性别</div>
        <div class="head tel">电话号码</div>
        <div class="head province">省份</div>
        <div class="head">操作</div>
    </div>
    <ul id="J_List">
        <li>
            <div class="id">1</div>
            <div class="name">张三</div>
            <div class="sex">男</div>
            <div class="tel">13788888888</div>
            <div class="province">浙江</div>
            <div class="user-delete">删除</div>
        </li>
        <li>
            <div class="id">2</div>
            <div class="name">李四</div>
            <div class="sex">女</div>
            <div class="tel">13788887777</div>
            <div class="province">四川</div>
            <div class="user-delete">删除</div>
        </li>
        <li>
            <div class="id">3</div>
            <div class="name">王二</div>
            <div class="sex">男</div>
            <div class="tel">13788889999</div>
            <div class="province">广东</div>
            <div class="user-delete">删除</div>
        </li>
    </ul>
</div>

<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 div = document.getElementsByClassName("user-delete");
        var ul = document.querySelector("#J_List");
        var list = ul.querySelectorAll("li");

        for (var i = 0; i < div.length; i++) {
            (function (i) {
                div[i].onclick = function () {
                    list[i].remove();
                    console.log(i);
                }
            })(i);
        }
    }

    new Contact();

其中


 (function (i) {
                div[i].onclick = function () {
                    list[i].remove();
                    console.log(i);
                }
            })(i);

这段立即执行函数没看懂意义

我的代码


 Contact.prototype.init = function () {
        let div = document.getElementsByClassName("user-delete");
        let ul = document.querySelector("#J_List");
        let list = ul.querySelectorAll("li");

        for (let i in div) {
            div[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闭包问题内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaScript中let避免闭包造成问题

本文链接: https://lsjlt.com/news/130971.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaScript中let避免闭包造成问题
    关于 let 避免闭包带来的问题 利用面向对象思想完成买家信息删除功能,每一条信息包含: 姓名 电话 电话号码 省份 实现以下要求: 不能借用任何第三方库,需要使用...
    99+
    2024-04-02
  • 闭包的陷阱:识别和避免 JavaScript 闭包中的缺陷
    闭包是一种强大的 JavaScript 特性,它允许内部函数访问其创建作用域中的变量。然而,闭包的滥用可能会导致各种陷阱。 1. 内存泄漏 闭包对外部变量的引用会阻止垃圾回收机制释放这些变量,从而导致内存泄漏。例如: function c...
    99+
    2024-03-15
    闭包
  • 闭包的谜题:剖析 JavaScript 闭包中的常见问题
    闭包通过在内部函数中引用外部变量来捕获变量。当外部函数返回时,内部函数仍然可以访问这些外部变量,即使外部函数本身已被销毁。 问题 2:闭包的陷阱是什么? 内存泄漏:如果闭包持有对外部变量的引用,而外部变量又引用了一些大型对象,则即使外部函...
    99+
    2024-03-14
    闭包
  • 详解JavaScript闭包问题
    闭包是纯函数式编程语言的传统特性之一。通过将闭包视为核心语言构件的组成部分,JavaScript语言展示了其与函数式编程语言的紧密联系。由于能够简化复杂的操作,闭包在主流JavaSc...
    99+
    2024-04-02
  • javascript闭包会造成内存泄漏吗
    本篇内容介绍了“javascript闭包会造成内存泄漏吗”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1....
    99+
    2024-04-02
  • JavaScript闭包用多会造成内存泄露吗
    今天小编给大家分享一下JavaScript闭包用多会造成内存泄露吗的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。.markd...
    99+
    2023-07-05
  • 如何避免golang函数闭包中的错误
    常见的闭包错误包括修改捕获变量和意外闭包。避免这些错误的方法包括:使用值传递,明确传递变量副本;使用显式转换,避免捕获变量的地址。这些措施确保了闭包不会意外修改外部变量或长时间引用变量。...
    99+
    2024-04-23
    golang 闭包
  • 破解闭包难题:回答有关 JavaScript 闭包的关键问题
    闭包是指 JavaScript 中一种特殊类型的函数,它可以访问其所在作用域之外的变量。这允许我们创建保存状态的函数,即使其调用程序已经完成执行。 关键问题 1. 闭包如何工作? 闭包通过创建内部函数来实现,该内部函数可以访问其外部函数的...
    99+
    2024-03-14
    闭包
  • Java接口面试:如何避免打包问题成为你的短板?
    在Java编程中,接口是一个非常重要的概念,它可以让我们更好地组织代码,提高代码的可读性和可维护性。但是,面试中经常会出现一些与接口相关的问题,例如打包问题,这些问题可能会成为你的短板。本文将介绍如何避免这些问题,并通过演示代码来帮助读者...
    99+
    2023-08-18
    接口 面试 打包
  • Python 打包 Spring 项目,如何避免并发问题?
    在实际的开发中,我们经常会遇到需要将Spring项目打包成可执行的jar包来部署到生产环境中。这种方式虽然方便,但也会带来一些并发问题。本文将介绍如何使用Python打包Spring项目,并避免并发问题的发生。 一、使用Python打包S...
    99+
    2023-09-07
    打包 spring 并发
  • 怎么使用Swoole避免分包问题的发生
    这篇文章主要讲解了“怎么使用Swoole避免分包问题的发生”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Swoole避免分包问题的发生”吧!一、什么是分包问题在网络通信中,为了提高效...
    99+
    2023-07-05
  • LeetCode算法题中,如何避免使用容器造成的额外空间开销?
    在LeetCode的算法题中,我们经常需要使用容器来存储数据。然而,使用容器会带来额外的空间开销,尤其是在处理大数据集时,这种开销可能会变得非常显著。因此,为了提高算法的效率,我们需要尽可能地避免使用容器。 接下来,我们将介绍一些避免使用...
    99+
    2023-06-01
    leetcode 编程算法 容器
  • Python 打包时如何避免 numpy 缓存导致的问题?
    Python 是一门非常流行的编程语言,拥有众多优秀的第三方库,其中 numpy 库是用于数值计算的重要库之一。然而,在使用 Python 的 numpy 库时,我们可能会遇到一些打包问题,其中一个常见问题就是缓存导致的问题。本文将介绍如何...
    99+
    2023-10-26
    打包 numpy 缓存
  • Dreamweaver如何避免中文乱码的问题
    小编给大家分享一下Dreamweaver如何避免中文乱码的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!方法如下点击“HTML”新建文档;点击“设计”模式;在...
    99+
    2023-06-08
  • Python打包缓存:如何避免编程算法中的缓存问题?
    Python打包缓存:如何避免编程算法中的缓存问题? 在Python编程中,缓存是一个经常出现的问题。如果你不小心使用了缓存,就会导致程序出错。缓存可以在循环中使用,但在递归中使用时,情况就会变得更加复杂。在本文中,我们将讨论Python中...
    99+
    2023-08-28
    打包 缓存 编程算法
  • Java中的JavaScript路径打包:如何避免常见错误?
    在开发Java应用程序时,我们经常需要在前端使用JavaScript。然而,在将JavaScript打包到Java项目中时,会遇到一些常见的问题。在本文中,我们将介绍如何避免这些问题并正确地打包JavaScript。 问题1:路径错误 在...
    99+
    2023-09-10
    打包 javascript path
  • PHP缓存和JavaScript容器:如何避免网站性能问题?
    现今,随着互联网的飞速发展,网站的性能问题越来越成为人们关注的焦点。在这个竞争激烈的时代,网站性能不仅仅是用户体验的问题,更是影响网站排名、流量和转化率的重要因素。在这篇文章中,我们将介绍如何使用PHP缓存和JavaScript容器来避免...
    99+
    2023-06-16
    缓存 javascript 容器
  • Java 同步问题:如何避免 IDE 中的死锁?
    在 Java 开发中,同步问题是一个非常常见的问题。其中,死锁是最棘手的问题之一。在 IDE 中,由于代码的复杂性和多线程的并发性,死锁问题更加常见。本文将介绍 Java 中的同步问题,包括死锁问题,以及如何避免 IDE 中的死锁。 一、...
    99+
    2023-06-26
    同步 ide http
  • ASP和JavaScript教程文件:如何在学习过程中避免常见问题?
    ASP和JavaScript是在Web开发中经常使用的两种编程语言。学习这两种语言的教程文件可以帮助您快速掌握它们的基础知识和操作技巧。然而,学习过程中可能会遇到一些常见问题,本文将为您介绍如何避免这些问题,并提供一些实用的演示代码。 一、...
    99+
    2023-09-07
    javascript 教程 文件
  • JavaScript解构赋值的陷阱:避免常见的错误和问题
    变量声明和解构赋值: 在使用解构赋值时,重要的是要注意变量的声明和解构的顺序。如果在解构之前声明变量,可能会导致意外的结果。以下示例演示了这种问题: // 错误示范 let {x, y} = {x: 1, y: 2}; // 结果:...
    99+
    2024-02-22
    JavaScript 解构赋值 陷阱 问题 解决方法
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作