你真的理解了比较运算符吗
平常我们都是不建议在代码上编写一些比较难理解的代码,例如 x == y 和 'A' > 'B' 。这篇文章或许不能给你带来什么大的帮助,但是却可以让你了解一些你可能没接触到的知识点。 由于有些参考资料来源于 ECMA 规范,所以感兴趣的可能需要先看《读懂 ECMAScript 规格》这篇文章,当然也可以忽略。 类型之间的转换表首先我们需要先了解基本的类型转换规则。 粗体需要特别留意的,可能跟你想象中的不一样。 原始值转换为数字转换为字符串转换为布尔值false0"false"falsetrue1"true"true00"0"false11"1"true"0"0"0"true"000"0"000"true"1"1"1"trueNaNNaN"NaN"falseInfinityInfinity"Infinity"true-Infinity-Infinity"-Infinity"true""0""false"20"20"20"true"Runoob"NaN"Runoob"true[ ]0""true[20]20"20"true[10,20]NaN"10,20"true["Runoob"]NaN"Runoob"true["Runoob","Google"]NaN"Runoob,Google"truefunction(){}NaN"function(){}"true{ }NaN"[object Object]"truenull0"null"falseundefinedNaN"undefined"false这里根据上面的表格列举些例子: 数字转字符串 这个最常用了,这个也很好理解。 String(123)或者 const a = 123;a.toString();将字符串转换为数字 Number("3.14") // 返回 3.14Number(" ") // 返回 0Number("") // 返回 0Number("99 88") // 返回 NaN字符串转布尔值 Boolean('test') // 返回 trueBoolean('0') // 返回 falseBoolean('000') // 返回 true== 比较运算符规则来源于 ECMA 相关规范 Abstract Equality Comparison。 == 等同运算符的两边的类型不一样的时候,会有类型自动转换规则。 相同的类型可以直接比较(相当于 === 比较),无需自动转换,不同类型有下面几种自动转换规则(x == y),规则优先级自上而下: 如果 x 是 null,y 是 undefined,返回 true ...