当前位置: 首页 > news >正文

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 代码的关键。


相关文章:

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

try...catch语句 try..catch语句是JavaScript中用来处理异常的一种方式。它允许我们在代码块中尝试执行可能会引发错误的代码,并在发生错误时捕获并处理异常。 下面是try..catch语句的基本语法: try {// 可能会引发错误的代码 } catch (error) {// 处理…...

thinkphp6的请求

由于笔者是刚入门thinkphp,所以学习时对照thinkphp的官网,各位读者也可以对照官网学习。还麻烦各位笔者一键三连,谢谢。 1.请求对象 当前的请求对象由think\Request类负责,该类不需要单独实例化调用,通常使用依赖注入…...

ant design vue 表格错位,表头错位

ant design vue 表格错位,表头错位 在官网中,我们可以看到下面图片的描述: 好的,我们按照官网来一波,前面都设置了固定宽度,娃哈哈就不设置了.会出现下面效果 为啥会多了一个竖线(因为按照官网来一波x:1300,这个1300太小的原因) 3.那我们把1300改成1600,1700试试,结果也不是…...

【小白向】微信小程序解密反编译教程

# 前言 最近笔者有做到微信小程序的渗透测试,其中有一个环节就是对微信小程序的反编译进行源码分析,所谓微信小程序反编译,就是将访问的小程序进行反向编译拿到部分源码,然后对源码进行安全审计,分析出其中可能存在的…...

Flutter基础 -- Dart 语言 -- 类抽象接口继承函数库

目录 1. 类 class 1.1 定义、使用类 1.2 构造函数 1.3 初始化列表 1.4 命名构造函数 1.5 重定向构造函数 1.6 callable 2. 类 get set 2.1 定义、使用 get set 2.2 简化 get set 2.3 业务场景 3. 静态 static 3.1 static 定义 3.2 函数内部访问 3.3 静态方法 3…...

【TB作品】msp430单片机,播放蜂鸣器音乐,天空之城

功能 msp430单片机,连接一个无源蜂鸣器,播放蜂鸣器音乐,天空之城。 适用于所有msp430单片机。 硬件 无源蜂鸣器,接单片机P1.5,使用vcc3.3v供电。 如果根据简谱修改音乐? //第一步 //首先修改music0 的变量&…...

C语言(数据存储)

Hi~!这里是奋斗的小羊,很荣幸各位能阅读我的文章,诚请评论指点,欢迎欢迎~~ 💥个人主页:小羊在奋斗 💥所属专栏:C语言 本系列文章为个人学习笔记,在这里撰写成文一…...

Linux shell编程学习笔记56:date命令——显示或设置系统时间与日期

0 前言 2024年的网络安全检查又开始了,对于使用基于Linux的国产电脑,我们可以编写一个脚本来收集系统的有关信息。在收集的信息中,应该有一条是搜索信息的时间。 1. date命令 的功能、格式和选项说明 我们可以使用命令 date --help 来查看 d…...

Realsense的一些事情

Realsense的一些事情 librealsense的安装 官网教程: apt 安装教程: https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md自行clone并编译教程: https://github.com/IntelRealSense/librealsense/blo…...

CISCN 2023 初赛 被加密的生产流量

题目附件给了 modbus.pcap 存在多个协议 但是这道题多半是 考 modbus 会发现 每次的 Query 末尾的两个字符 存在规律 猜测是base家族 可以尝试提取流量中的数据 其中Word Count字段中的22871 是10进制转16进制在转ascii字符串 先提取 过滤器判断字段 tshark -r modbus.pcap …...

初识C语言第三十天——设计三子棋游戏

目录 一.设计游戏框架 1.打印游戏菜单 2.输入选择判断(玩游戏/游戏结束/输入错误重新输入) 二、玩游戏过程设计 1.设计棋格存放棋子——二维数组 2.初始化棋盘——初始化为空格 3.打印棋盘——本质上就是打印数组 4.游戏过程——1.玩家走棋 2.…...

ehcache3多级缓存应用

项目中如果有使用大量的本地缓存场景,可以使用redisehcache组合缓存,优先使用ehcache本地缓存,本地缓存没有查询到再使用redis缓存 可看前文中如何集成 本地缓存使用存在的问题 1、本地缓存如何保证缓存的是最新值 可定义版本号、自增id或者…...

C# WinForm —— 24 Threading.Timer 组件介绍与使用

1. 简介 System.Threading.Timer 多线程 轻量级 精度高 提供以指定的时间间隔对线程池线程执行方法的机制 和System.Timers.Timer 类似,每隔一段时间触发事件,执行操作(不是由UI线程执行的),即使事件中执行了比较耗时的操作,也…...

03-07Java自动化之JAVA基础之循环

JAVA基础之循环 一、for循环 1.1for循环的含义 for(初始化语句;条件判断;条件控制或–){ ​ //代码语句 } 1、首先执行初始话语句,给变量一个起始的值 2、条件判断进行判断,为true,执行循环体中的代码语句 ​ …...

【人工智能Ⅱ】实验8:生成对抗网络

实验8:生成对抗网络 一:实验目的 1:理解生成对抗网络的基本原理。 2:学会构建改进的生成对抗网络,如DCGAN、WGAN、WGAN-GP等。 3:学习在更为真实的数据集上应用生成对抗网络的方法。 二:实验…...

vmware将物理机|虚拟机转化为vmware虚机

有时,我们需要从不同的云平台迁移虚拟机、上下云、或者需要将不再受支持的老旧的物理服务器转化为虚拟机,这时,我们可以用一款虚拟机转化工具:vmware vcenter converter standalone,我用的是6.6的版本,当然…...

redis 高可用及哨兵模式 @by_TWJ

目录 1. 高可用2. redis 哨兵模式3. 图文的方式让我们读懂这几个算法3.1. Raft算法 - 图文3.2. Paxos算法 - 图文3.3. 区别: 1. 高可用 在 Redis 中,实现 高可用 的技术主要包括 持久化、复制、哨兵 和 集群,下面简单说明它们的作用&#xf…...

封装tab栏,tab切换可刷新页面

dom结构 <template><div class"container"><!-- tab栏 --><div class"border-b"><tabs:tabsList"tabsList":selectTabsIndex"selectTabsIndex"tabsEven"tabsEven"></tabs></div>…...

JavaScript第八讲:日期,Math,自定义对象

目录 前言 日期 1. 创建日期对象 2. 年/月/日 3. 时:分:秒:毫秒 4. 一周的第几天 5. 经历的毫秒数 6. 修改日期和时间 Math 1. 自然对数和圆周率 2. 绝对值 3. 最小最大 4. 求幂 5. 四舍五入 6. 随机数 自定义对象 1. 通过 new Object 创建对象 2. 通过 funct…...

php质量工具系列之phploc

phploc是一个快速测量PHP项目大小的工具 结果支持raw csv xml json格式&#xff0c;可输出文件或者打印到控制台 安装 PHAR方式 wget https://phar.phpunit.de/phploc.pharphp phploc.phar -vComposer方式(推荐) composer global require --dev phploc/phplocphploc -v使用 …...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...