JavaScript错误;调试;“=”,“==”,“===”的区别

try...catch语句

try..catch语句是JavaScript中用来处理异常的一种方式。它允许我们在代码块中尝试执行可能会引发错误的代码,并在发生错误时捕获并处理异常。

下面是try..catch语句的基本语法:

try {// 可能会引发错误的代码
} catch (error) {// 处理错误的代码
}

在try块中,我们可以编写可能会引发错误的代码。如果在执行该代码时发生了错误,JavaScript会立即跳转到catch块,并将错误对象作为参数传递给catch块中的error变量。我们可以利用这个error变量来处理错误。

下面是一个例子,说明了try..catch语句的用法:

function divide(a, b) {try {if (b === 0) {throw new Error("除数不能为0");} else {return a / b;}} catch (error) {console.log("发生错误:" + error.message);}
}console.log(divide(10, 2)); // 输出: 5
console.log(divide(10, 0)); // 输出: 发生错误:除数不能为0

在上面的例子中,我们定义了一个divide函数,用于执行除法运算。在try块中,我们检查除数是否为0。如果除数为0,则抛出一个新的Error对象,并在catch块中捕获并处理这个错误。在catch块中,我们使用console.log输出了错误的信息。

在第一个console.log中,我们调用了divide函数,传递了两个非零参数。因此除法运算可以正常执行,结果为5。而在第二个console.log中,我们调用了divide函数,传递了一个0作为除数,这会引发一个错误。try..catch语句会捕获这个错误,并输出该错误的信息。

总的来说,try..catch语句是JavaScript中处理异常的一种重要方式,它可以帮助我们捕获和处理可能会发生的错误,从而使我们的代码更加健壮和可靠。


finally语句是JavaScript中try..catch语句的可选部分,用于在try块中的代码执行完毕后,无论是否发生异常,都会执行一些特定的代码。

下面是try..catch..finally语句的基本语法:

try {// 可能会引发错误的代码
} catch (error) {// 处理错误的代码
} finally {// 在成功执行或发生异常后都会执行的代码
}

在try块中,我们编写可能会引发错误的代码。如果在执行该代码时发生了错误,JavaScript会立即跳转到catch块,并将错误对象作为参数传递给catch块中的error变量。我们可以利用这个error变量来处理错误。

无论try块中的代码是否执行成功,finally块中的代码都会被执行。即使没有发生异常,也会执行finally块中的代码。

下面是一个例子,说明了try..catch..finally语句的用法:

function divide(a, b) {try {if (b === 0) {throw new Error("除数不能为0");} else {return a / b;}} catch (error) {console.log("发生错误:" + error.message);} finally {console.log("执行finally块中的代码");}
}console.log(divide(10, 2)); // 输出: 5  执行finally块中的代码
console.log(divide(10, 0)); // 输出: 发生错误:除数不能为0  执行finally块中的代码

在上面的例子中,我们定义了一个divide函数,用于执行除法运算。在try块中,我们检查除数是否为0。如果除数为0,则抛出一个新的Error对象,并在catch块中捕获并处理这个错误。在catch块中,我们使用console.log输出了错误的信息。

无论try块中的代码是否执行成功,finally块中的代码都会被执行。在上面的例子中,我们可以看到在每次调用divide函数后,无论是否发生异常,"执行finally块中的代码"都会被打印出来。

总的来说,finally语句可以用来执行一些无论是否发生异常都需要执行的清理操作,例如释放资源或恢复一些状态。它可以确保我们的代码在发生异常时仍然能够继续执行必要的操作。


=,==,===使用误区

在 JavaScript 中,有三种比较运算符:=====,和 =。它们的作用是比较两个值之间的关系,但是它们有一些使用误区。

  1. ==(相等性比较):它比较两个值是否相等,并且会进行类型转换。这就是 == 的问题所在,它可能会导致一些隐式的类型转换,从而产生一些意想不到的结果。例如:
console.log(1 == "1"); // 输出: true
console.log(true == 1); // 输出: true
console.log(null == undefined); // 输出: true

在上面的例子中,== 比较了不同类型的值,但是仍然返回了 true。这是因为 JavaScript 在比较两个不同类型的值时会进行类型转换,使它们具有相同的类型,然后再进行比较。

  1. ===(严格相等性比较):与 == 不同,=== 进行严格的比较,不会进行类型转换。它要求两个值不仅值相等,而且类型也要相等。例如:
console.log(1 === "1"); // 输出: false
console.log(true === 1); // 输出: false
console.log(null === undefined); // 输出: false

上面的例子中,由于类型不同,=== 返回了 false===在比较时要求两个操作数的类型和值都完全相同。

  1. =(赋值操作符):它用于给一个变量赋值。这与比较运算符 ===== 完全不同。例如:
let x = 5;

上面的代码将 5 赋值给变量 x

使用时需注意:

  • 推荐使用 === 进行严格相等性比较,因为它避免了类型转换的问题,更符合预期。
  • 如果需要进行类型转换,可以使用 ==,但是需要小心处理隐式的类型转换,以免产生意想不到的结果。
  • 切勿混淆 =(赋值操作符)和 =====(比较运算符),它们的作用完全不同。

总的来说,理解和正确使用这三种运算符是编写高质量 JavaScript 代码的关键。


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

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

相关文章

【Microelectronic Systems】

PART1 嵌入式系统概述与玩转mbed 1 嵌入式系统,微控制器,与ARM 1.1什么是嵌入式系统? 微处理器不仅仅存在于通用计算机中,也可以安置在一些不需要计算的设备内部,比如洗衣机,摄像机。微处理器常常可以控制…

vscode快捷键英文单词对照表

今天想改我的vscode快捷键,unfoldall这条跟我其他的ide都不一样,我得挨个记……但是ctrlshiftp一打开快捷键 点击右侧齿轮进行快捷键录制,但是我这次点左边进去查看了一下unfoldall当前是什么 后来看到了……这些oem_5是什么鬼? {…

游戏心理学Day03

心理学的生理基础 第二节人类感觉 一.视觉系统 如果不依赖视觉呈现电子游戏,就无法存在,人眼就像一架照相机,具有收集和汇聚光线的能力 在我们的生活空间里,充满了电磁波,包括光和其他能量,这些光组成了…

kafka(九)——LeaderEpoch和零拷贝

Leader Epoch 基于HW同步数据 流程说明: 集群配置至少写入的副本数为1,min.insync.replicas 1;初始状态下,副本1(Leader)和副本2(Follower)的LEO和HW均为0;生产者向副…

防爆AGV叉车在现代物流行业的应用

AGV 随着机器人技术在中国的快速发展,国内企业开始推出区别于传统叉车的叉车AGV,旨在为企业降本增效,降低人工成本与对人的依赖;同时,也将人工从危险恶劣的环境中解放出来。随着技术的持续提升,叉车AGV已经…

npm run dev 同时运行vue前端项目和node后端项目

将两个项目放到一个目录下 项目拖进vscode中,安装包依赖,修改配置 npm i concurrently "dev": "concurrently \"vite --mode development\" \"nodemon app.js\"" 命令行 npm run dev 运行 没有运行成功排查 …

【第九课】空间数据基础与处理——空间参考处理

一、前言 地图图层中的所有元素都具有特定的地理位置和范围,这使得它们能够定 位到地球表面上相应的位置。精确定位地理要素对于制图和 GIS来说都至关 重要,而要正确地描述要素的位置和形状,需要引入一个用于定义位置的框 架———空间参考。…

数青蛙 ---- 模拟

题目链接 题目: 分析: 题目的意思是: 一次蛙鸣是一个完整的字符串"croak", 给你一个字符串, 让你求出最少的青蛙数目 示例一: 两次完整的"croak", 可以由一只青蛙完成, 所以答案为1 示例二: 第一次蛙鸣还没有结束, 又出现了"c", 说明有第二只青…

RTPS协议之Structure

目录 概览RTPS中的各实体和类RTPS实体和类的属性类型:RTPS Entities属性 HistoryCacheCacheChangeRTPS EntityRTPS ParticipantRTPS EndPointRTPS WriterRTPS Reader和DDS Entities的关联DDS DataWriterDDS DataReader 每个RTPS实体和DDS实体是一对一对应的。Histor…

Docker基础篇之Docker容器数据卷

文章目录 1. Docker配置容器卷配置时的一个建议2. Docker容器卷目录3. Docker容器卷案例 1. Docker配置容器卷配置时的一个建议 Docker挂载主机目录访问如果出现cannot open directory.:Permission dnied 解决方法:在挂载目录后加一个–privilegedtrue 如果是Cento…

ArkTS UI开发规范的常用装饰器

Component 可以装饰struct。结构体(struct)在被装饰后具有基于组件的能力,需要实现build方法来更新UI。Entry 可以装饰struct。组件在被装饰后会作为页面的入口组件,页面加载时将被渲染显示。Preview 可以装饰struct。 如果自定义的组件被Preivew装饰&am…

vivado BD_INTF_NET、BD_INTF_PIN

BD_INTF_NET 描述 接口是一组信号,它们共享一个共同的功能,同时包含 单个信号和多条总线。例如,AXI4Lite主机包含一个 单个信号的数量加上多条总线,这些都是制作 联系通过将这些信号和总线分组到一个接口中,Vivado IP积…

C语言指针用法完善篇

一,指针定义: 1,讲解 指针变量用来记录地址数据,没有记录有效地址的指针变量不可以使用。 定义一个变量A和一个指针B,此时变量A存放在内存1000区间,将变量A赋值给指针变量B,此时指针变量B所接收到的并不是…

彩光大放异彩!《智慧园区以太全光网络建设技术规程》应用案例征集活动结果公布

近日,中国建筑业协会绿色建造与智能建筑分会正式公布了《智慧园区以太全光网络建设技术规程》应用案例征集活动的结果。本次活动旨在推广和应用该规程,进一步推动智慧园区的数字化、智慧化、绿色化建设。众多优秀项目在征集活动中脱颖而出,展示了规程在实际应用中的显著成效。评…

STM32--ESP8266 WiFi模块

前言:此文所述模块为正点原子出版的ATK-ESP8266模块 一、特性参数 ATK-ESP8266 是 ALIENTEK 推出的一款高性能的 UART-WiFi(串口-无线)模块,ATK-ESP8266 板载了正点原子公司自主开发的 ATK-ESP-01 模块。 该模块是 ATK_ESP8266 的…

MySQL表的增删改查初阶(上篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…

防火墙技术基础篇:eNSP配置防火墙主备备份的双机热备

防火墙技术基础篇:配置主备备份的双机热备 防火墙双机热备(High Availability, HA)技术是网络安全中的一个关键组成部分,通过它,我们可以确保网络环境的高可靠性和高可用性。下面我们一起来了解防火墙双机热备的基本原…

安装存储器的段描述符并加载GDTR

代码清单 ;代码清单12-1;文件名:c12_mbr.asm;文件说明:硬盘主引导扇区代码;创建日期:2011-5-16 19:54;修改于2022-02-16 11:15;设置堆栈段和栈指针mov ax, csmov ss, axmov sp, 0x7c00;计算GDT所在的逻辑段地址12 mov ax, [c…

文件删错后的救赎:恢复与预防策略

日常使用电脑、手机或其他存储设备时,我们时常会遭遇文件删错的尴尬局面。那些原本珍贵或至关重要的文件,可能因为一次意外的点击、一次误操作,甚至是一次设备故障而消失得无影无踪。本文将深入探讨文件删错的定义、原因、恢复方案以及预防措…