JavaScript操作符之关系操作符

简介: JavaScript操作符之关系操作符

这个没什么好说的,学过数据的都知道。

let a = 1
let b = 2
let c = 3
console.log(a > b)
console.log(a < b)
console.log(a + b <= c)
console.log(a + b >= c)

复制

上面这种是针对数值的判断,但是现实中可能不这么美好,有时需要不同类型的也需要判断。

console.log("q" > "b")
console.log({} > "b")
console.log({} > [])
console.log(true > false)

复制

那么则遵循:

  • 如果操作数都是数值,则执行数值比较。
  • 如果操作数都是字符串,则逐个比较字符串中对应字符的编码。
  • 如果有任一操作数是数值,则将另一个操作数转换为数值,执行数值比较。
  • 如果有任一操作数是对象,则调用其 valueOf()方法,取得结果后再根据前面的规则执行比较。如果没有 valueOf()操作符,则调用 toString()方法,取得结果后再根据前面的规则执行比较。
  • 如果有任一操作数是布尔值,则将其转换为数值再执行比较。

很多人搞不懂字符串是怎么比较的,对字符串而言,关系操作符会比较字符串中对应字符的编码,而这些编码是数值。比较完之后,会返回布尔值。

比如小写a对应的字符编码是097,小写z对应的字符编码是122:

console.log("a" < "z")  // true
console.log(065 < 090)  // true

复制

还有种情况是,如果一方是字符串(非数字字符串),另一方是数字

console.log("a" < 3)  
console.log("a" >= 3)

复制

根据上面规则,有一方是数字,另一方要转为数值,但是a不能转为数值,只能转为NaN,这里就有个很有意思的问题,我们常识是,如果一个数a不小于另外一个b,那么这个b一定大于等于a,但是在这里,我们通过控制台发现。

console.log("a" < 3)   // false
console.log("a" >= 3)  // false

复制

所以这里要重点记下,任何值和NaN比较时,都会返回false。

相关文章
|
6月前
|
JavaScript 前端开发 算法
JavaScript 中算术操作符:全面解读、实战应用与最佳实践
【4月更文挑战第5天】本文探讨JavaScript中的算术操作符,包括加、减、乘、除、求余、自增、自减及复合赋值等,强调理解与熟练运用它们对提升编程效率和代码准确性的重要性。文中通过示例介绍了各种操作符的用法,同时提醒注意数据类型转换、浮点数精度、除以零错误以及利用短路求值优化逻辑等问题。通过学习,读者能更好地掌握算术操作符在不同场景的应用,提升编程技能。
75 1
|
6月前
|
JavaScript 前端开发 安全
javascript中的可选链操作符
javascript中的可选链操作符
|
3月前
|
JavaScript 前端开发 开发者
深入解析JavaScript中的比较操作符
【8月更文挑战第20天】
25 0
|
6月前
|
JavaScript 前端开发
探索JavaScript中的New操作符:原理与使用
探索JavaScript中的New操作符:原理与使用
|
6月前
egg.js 24.12sequelize模型-where操作符
egg.js 24.12sequelize模型-where操作符
60 1
egg.js 24.12sequelize模型-where操作符
|
JavaScript
JS new操作符的具体干了什么?
JS new操作符的具体干了什么?
55 1
|
JavaScript 前端开发 索引
JavaScript Day02 操作符及类型转换与流程控制语句 3
JavaScript Day02 操作符及类型转换与流程控制语句 3
71 0
|
Web App开发 JavaScript 前端开发
JavaScript Day02 操作符及类型转换与流程控制语句 1
JavaScript Day02 操作符及类型转换与流程控制语句 1
74 0
|
存储 JavaScript 前端开发
javascript基本语法学习(变量、数据类型、操作符、条件语句、循环)
javascript基本语法学习(变量、数据类型、操作符、条件语句、循环)
|
JavaScript
【new操作符做了什么 —— js】
【new操作符做了什么 —— js】