混淆赋值运算符(=)和相等比较运算符(==, ===)(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
js运算符
js运算符
21 5
|
2月前
|
JavaScript 前端开发
js 变量作用域与解构赋值| 22
js 变量作用域与解构赋值| 22
|
1月前
|
JavaScript 前端开发
JavaScript 运算符全知道
JavaScript 运算符全知道
50 0
|
2月前
|
JavaScript 前端开发
JavaScript 运算符
JavaScript 运算符
20 3
|
3月前
|
JavaScript 前端开发
JavaScript 中的 typeof 运算符
【8月更文挑战第29天】
25 1
|
3月前
|
JavaScript 前端开发 安全
深入理解JavaScript中的比较运算符
深入理解JavaScript中的比较运算符
|
3月前
|
前端开发 JavaScript 程序员
聊聊前端 JavaScript 的扩展运算符 “...“ 的使用场景
聊聊前端 JavaScript 的扩展运算符 “...“ 的使用场景
|
3月前
|
JavaScript 前端开发
JS常见的运算符有哪些?
JS常见的运算符有哪些?
|
3月前
|
JavaScript 前端开发
JavaScript基础&实战(2)js中的强制类型转换、运算符、关系运算符、逻辑运算符、条件运算符
这篇文章详细介绍了JavaScript中的强制类型转换、运算符(包括算术、逻辑、条件、赋值和关系运算符)的使用方法和优先级规则。
JavaScript基础&实战(2)js中的强制类型转换、运算符、关系运算符、逻辑运算符、条件运算符
|
4月前
|
JavaScript 前端开发 网络架构
JavaScript编码之路【对象的增强、ES6新特性之函数的默认值设置 、rest参数 (剩余参数)、拓展运算符、对象与数组的解构赋值】
JavaScript编码之路【对象的增强、ES6新特性之函数的默认值设置 、rest参数 (剩余参数)、拓展运算符、对象与数组的解构赋值】
57 1