关系操作符执行比较两个值的操作,包括小于(<)、大于(>)、小于等于(<=)和大于等于(>=),用法跟数学课上学的一样。这几个操作符都返回布尔值。
这个没什么好说的,学过数据的都知道。
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)
那么则遵循:
很多人搞不懂字符串是怎么比较的,对字符串而言,关系操作符会比较字符串中对应字符的编码,而这些编码是数值。比较完之后,会返回布尔值。
比如小写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。