JS易错点

JavaScript 中的常见易错点包括语法错误、逻辑错误和一些常见的陷阱。以下是一些常见的错误和避免这些错误的建议:

  1. 变量声明错误

    • 使用 var 声明变量可能导致变量提升和作用域问题,建议使用 letconst
    • 错误示例:
      var x = 10;
      if (true) {var x = 20; // 这里会重新声明并覆盖全局的 x
      }
      console.log(x); // 输出 20
      
  2. 类型转换错误

    • JavaScript 是弱类型语言,类型转换可能会导致意外结果。
    • 错误示例:
      console.log(1 + "1"); // 输出 "11" 而不是 2
      
  3. 相等性比较

    • ===== 的区别,== 会进行类型转换,而 === 不会。
    • 建议使用 === 进行比较。
    • 错误示例:
      console.log(0 == false); // 输出 true
      console.log(0 === false); // 输出 false
      
  4. 全局变量污染

    • 避免意外创建全局变量。
    • 错误示例:
      function foo() {bar = 10; // 未声明的变量 bar 被自动提升为全局变量
      }
      foo();
      console.log(bar); // 输出 10
      
  5. 闭包问题

    • 使用闭包时要注意变量的作用域和生命周期。
    • 错误示例:
      for (var i = 0; i < 3; i++) {setTimeout(function() {console.log(i); // 每次都会输出 3}, 1000);
      }
      
  6. 箭头函数中的 this

    • 箭头函数不会绑定自己的 this,它会捕获上下文的 this 值。
    • 错误示例:
      function Person() {this.age = 0;setInterval(() => {this.age++; // 这里的 this 是 Person 实例}, 1000);
      }const p = new Person();
      
  7. 浮点数计算误差

    • JavaScript 使用 IEEE 754 标准来表示浮点数,这可能导致计算误差。
    • 错误示例:
      console.log(0.1 + 0.2); // 输出 0.30000000000000004
      
  8. 数组和对象的引用

    • 数组和对象是引用类型,赋值和比较时要注意。
    • 错误示例:
      const arr1 = [1, 2, 3];
      const arr2 = arr1;
      arr2.push(4);
      console.log(arr1); // 输出 [1, 2, 3, 4]
      
  9. NaN 的比较

    • NaN(Not-a-Number) 与任何值都不相等,包括它自身。
    • 错误示例:
      console.log(NaN === NaN); // 输出 false
      
  10. 事件处理中的循环

    • 在事件处理函数中不小心使用了闭包导致循环引用。
    • 错误示例:
      for (var i = 0; i < 3; i++) {document.getElementById('btn' + i).addEventListener('click', function() {alert(i); // 每次都会输出 3});
      }
      

通过注意以上常见的错误和陷阱,可以在编写 JavaScript 代码时避免很多潜在的问题。

a. 编写一段代码,展示如何正确使用 let 解决变量提升问题。
b. 创建一个函数,用来安全地比较浮点数,避免浮点数计算误差。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/19460.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hibernate的优缺点

Hibernate的优缺点可以归纳如下&#xff1a; 优点&#xff1a; 对象关系映射&#xff08;ORM&#xff09;&#xff1a; Hibernate提供了强大的对象关系映射功能&#xff0c;允许开发人员以面向对象的方式操作数据库&#xff0c;从而简化了数据库操作&#xff0c;提高了开发效…

污水净化之旅:可视化技术揭秘城市“血液”的循环奥秘

在繁华的都市背后&#xff0c;有一个默默守护着我们的“肾脏”——污水处理厂。它悄无声息地处理着每天产生的污水&#xff0c;确保我们的生活环境洁净美好。但你知道这个“肾脏”是如何工作的吗&#xff1f;今天&#xff0c;就让我们一起走进污水处理的神秘世界&#xff0c;通…

Leetcode:寻找两个正序数组的中位数

题目链接&#xff1a;4. 寻找两个正序数组的中位数 - 力扣&#xff08;LeetCode&#xff09; 题目分析 1、当只有一个有序数组时&#xff0c;该数组的中位数会将该数组分为两份&#xff1a;左子数组 和 右子数组 2、当有两个有序数组时&#xff0c; 我们仍然可以通过一条分隔…

上岸极不保护一志愿院校经验。

这个系列会邀请上岸学长学姐进行经验分享~ 今天分享经验的同学上岸了哈尔滨工程大学。并不是对这所院校有什么歧视&#xff0c;只是按照往年择校数据来看&#xff0c;确实不太保护一志愿。大家自行斟酌&#xff0c;有利有弊。 经验分享 学长23年上岸哈尔滨工程大学水声工程学…

Sealos CLI快速部署部署K8s集群

1. Kubernetes基础环境部署 kubernetes有多种部署方式&#xff0c;目前主流的方式有kubeadm、minikube、二进制包 minikube&#xff1a;一个用于快速搭建单节点kubernetes的工具 kubeadm&#xff1a;一个用于快速搭建kubernetes集群的工具 二进制包 &#xff1a;从官网下载每…

社区供稿丨GPT-4o 对实时互动与 RTC 的影响

以下文章来源于共识粉碎机 &#xff0c;作者AI芋圆子 前面的话&#xff1a; GPT-4o 发布当周&#xff0c;我们的社区伙伴「共识粉碎机」就主办了一场主题为「GPT-4o 对实时互动与 RTC 的影响」讨论会。涉及的话题包括&#xff1a; GPT-4o 如何降低延迟&#xff08;VAD 模块可…

k8s集群搭建

k8s集群搭建 前期准备 1.关闭selinux 永久关闭selinux sed -i s/enforcing/disabled/g /etc/selinux/config更改后需重启系统 reboot2.关闭防火墙 systemctl stop firewalld && systemctl disable firewalld3.关闭swap内存分区 永久关闭swap分区 echo vm.swapp…

LabVIEW中进行步进电机的位置控制

在LabVIEW中进行步进电机的位置控制&#xff0c;通常涉及以下几个关键步骤&#xff1a;设置硬件、配置通信、编写控制算法和实施反馈控制。以下是一个详细的介绍。 硬件设置 步进电机&#xff1a;选择合适的步进电机&#xff0c;根据负载和应用需求选择适当的步数和转矩。 驱…

FL Studio21.2.8中文版让你的音乐创作如鱼得水

在音乐的世界里&#xff0c;我们都是探索者&#xff0c;追求着无尽的创新和可能性。而在这个过程中&#xff0c;我们往往会遇到各种挑战和困扰。如何快速高效地创作出满意的音乐作品&#xff1f;如何将我们的创意完美地呈现出来&#xff1f;这些问题可能一直困扰着你。今天&…

成都欣丰洪泰文化传媒有限公司助力品牌快速崛起

在当今数字化浪潮汹涌的时代&#xff0c;电商行业作为新经济的代表&#xff0c;正以其独特的魅力和无限的潜力&#xff0c;引领着商业模式的创新与变革。在这个充满机遇与挑战的领域里&#xff0c;成都欣丰洪泰文化传媒有限公司凭借其专业的电商服务能力和前瞻性的战略眼光&…

如何在.htaccess文件创建一个自定义404页面

本周有一个客户&#xff0c;购买Hostease的虚拟主机&#xff0c;询问我们的在线客服&#xff0c;如何在.htaccess文件创建一个自定义404页面&#xff1f;我们为用户提供相关教程&#xff0c;用户很快解决了遇到的问题。在此&#xff0c;我们分享这个操作教程&#xff0c;希望可…

NIFT和BMP批量互相转换(matlab)

前言&#xff1a;最近在做数据集&#xff0c;需要进行NIFT和BMP的批量互相转换。之前都是一张一张转换的&#xff0c;用Image J就能完成&#xff0c;但是最近数据太多了&#xff0c;所以得研究一下如何批量转换。 NIFT和BMP互相转换 NIFT和BMP介绍NIFTBMP 为什么要转换Matlab进…

MVC和MVVM

MVC Model层&#xff1a;用于处理应用程序数据逻辑的部分&#xff0c;通常负责在数据库中存取数据 View&#xff08;视图&#xff09;处理数据显示的部分。通常视图是依据模型数据创建的 Controller&#xff08;控制器&#xff09;是处理用户交互的部分。通常控制器负责从视…

从零开始学Vue3--环境搭建

1.搭建环境 下载nodejs nodejs下载地址 更新npm npm install -g npm 设置npm源&#xff0c;加快下载速度 npm config set registry https://registry.npmmirror.com 使用脚手架创建项目 npm create vuelatest 根据你的需要选择对应选项 进入新建的项目下载依赖 npm in…

Tasker+SendSilentMail实现钉钉自动打卡

Tasker 允许用户根据自定义的“配置文件”(Profiles)&#xff0c;在特定的“背景”(Contexts)下&#xff0c;执行指定的“任务”(Tasks)。以下是关于Tasker的详细介绍&#xff1a; 强大的自定义能力&#xff1a;用户可以根据自己的需求&#xff0c;创建各种配置文件和任务&…

【BUG】流式响应requests得到: ping - 和时间戳

前情提要 运行Langchain-Chatchat项目&#xff0c;使用自定义请求访问API Server流式输出 报错展示 b: ping - 2024-05-22 00:46:04.83252000:00\r\n\r\n报错原因 这通常是由于 Server-Sent Events (SSE) 实现中使用的“心跳”机制&#xff0c;以确保连接保持活跃。一些 SSE…

Java 在Word文档中添加、删除页面

在排版或者编辑Word文档时&#xff0c;可能会需要增加新页面或删除某个已有页面&#xff0c;以便更好地呈现内容。下面将介绍如何使用国产Java控件来实现在Word文档中增删页面的功能。 目录 Java 在Word文档末尾新增一页 Java 在Word文档指定位置插入一页 Java 删除Word文档…

百度ERNIE系列预训练语言模型浅析(4)-总结篇

总结&#xff1a;ERNIE 3.0与ERNIE 2.0比较 &#xff08;1&#xff09;相同点&#xff1a; 采用连续学习 采用了多个语义层级的预训练任务 &#xff08;2&#xff09;不同点&#xff1a; ERNIE 3.0 Transformer-XL Encoder(自回归自编码), ERNIE 2.0 Transformer Encode…

用Python实现办公自动化

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…

用Kotlin协程消灭安卓开发中的回调地狱

原创 Pony 拍码场 安卓原生开发的痛点 自Android平台推出以来&#xff0c;Java一直是开发Android应用的主要语言。尽管后来Kotlin成为了谷歌主推的编程语言&#xff0c;Java仍然被广泛使用&#xff0c;在Android开发中仍占有重要地位。从github的数据看&#xff0c;用Java写的…