混淆赋值运算符(=)和相等比较运算符(==, ===)(js的问题)

简介: 混淆赋值运算符(=)和相等比较运算符(==, ===)(js的问题)

从名字可以看出来,赋值运算符是用来给变量赋值的。开发者经常会把它和相等比较运算符混淆。

来看一个例子:

const name = 'javascript';
if ((name = 'nodejs')) {
    console.log(name);
}
// output - nodejs

在这个例子里,它其实并没有比较变量 name 和字符串 'nodejs' ,而是把 'nodejs' 分配给了 name,因此最后打印出来的是 'nodejs'。


在 JavaScript 里,双等号和三个等号(==, ===)都叫作比较运算符。


对上面的代码来说,下面才是比较两个值正确的做法:

const name = 'javascript';
if (name == 'nodejs') {
    console.log(name);
}
// no output
// OR
if (name === 'nodejs') {
    console.log(name);
}
// no output

这两个比较运算符的区别是:两个等号是宽松的比较,三个等号是严格的比较。

宽松比较只比较值,严格比较会同时比较值和数据类型。

下面的代码能解释得更清楚:

const number = '1';
console.log(number == 1);
// true
console.log(number === 1);
// false

给变量 number 分配一个字符串类型的值 1。如果用双等号去比较它和一个数值类型的 1 的话,会返回 true,因为两个值都是 1。但是如果用三个等号去比较,就会返回 false,因为两个值是不同的数据类型。

相关文章
|
1月前
|
存储 JavaScript 前端开发
【JavaScript技术专栏】JavaScript基础入门:变量、数据类型与运算符
【4月更文挑战第30天】本文介绍了JavaScript的基础知识,包括变量(var、let、const)、数据类型(Number、String、Boolean、Undefined、Null及Object、Array)和运算符(算术、赋值、比较、逻辑)。通过实例展示了如何声明变量、操作数据类型以及使用运算符执行数学和逻辑运算。了解这些基础知识对初学者至关重要,是进阶学习JavaScript的关键。
|
2天前
|
JSON 缓存 前端开发
JavaScript 新特性:新增声明命令与解构赋值的强大功能
JavaScript 新特性:新增声明命令与解构赋值的强大功能
|
2天前
|
JavaScript
详细讲解JS的解构赋值(Es6)
详细讲解JS的解构赋值(Es6)
|
9天前
|
JavaScript 前端开发 开发者
JavaScript进阶-解构赋值与展开运算符
【6月更文挑战第19天】ES6的解构赋值与展开运算符增强了JS开发效率。解构允许直接从数组或对象提取值,简化数据提取,而展开运算符则用于合并数组和对象或作为函数参数。解构时注意设置默认值以处理不存在的属性,避免过度嵌套。展开运算符需区分数组与对象使用,勿混淆于剩余参数。通过示例展示了这两种操作在数组和对象中的应用,提升代码可读性与简洁度。
|
10天前
|
JavaScript 前端开发 Java
【JavaScript】ECMAS6(ES6)新特性概览(二):解构赋值、扩展与收集、class类全面解析
【JavaScript】ECMAS6(ES6)新特性概览(二):解构赋值、扩展与收集、class类全面解析
16 2
|
16天前
|
JavaScript 前端开发
JavaScript基础-运算符与条件语句
【6月更文挑战第11天】本文探讨了JavaScript中的运算符和条件语句,包括算术、比较、逻辑、赋值及三元运算符。强调了使用严格等于`===`避免类型转换错误,理解逻辑运算符短路特性和优化条件结构以提高代码可读性。通过示例展示了正确使用这些概念,以提升代码质量和维护性。
|
6天前
|
JavaScript 前端开发
JS常见的运算符有哪些?
JS常见的运算符有哪些?
7 0
|
1月前
|
JavaScript 前端开发
JS中运算符的算术、赋值、+、比较(不同类型之间比较)、逻辑
JS中运算符的算术、赋值、+、比较(不同类型之间比较)、逻辑
19 1
|
1月前
|
JavaScript 前端开发
js的运算符
js的运算符
29 2
|
1月前
|
JavaScript
js的一些运算符规则
js的一些运算符规则
17 1