比较运算符

我们知道,在数学中有很多用于比较大小的运算符。

在 JavaScript 中,它们的编写方式如下:

  • 大于 / 小于:a > ba < b
  • 大于等于 / 小于等于:a >= ba <= b
  • 检查两个值的相等:a == b,请注意双等号 == 表示相等性检查,而单等号 a = b 表示赋值。
  • 检查两个值不相等。不相等在数学中的符号是 ,但在 JavaScript 中写成 a != b

通过比较运算符可以比较两个值之间的大小关系,如果关系成立它会返回 true,如果关系不成立则返回 false。

比较结果为 Boolean 类型

所有比较运算符均返回布尔值:

  • true —— 表示“yes(是)”,“correct(正确)”或“the truth(真)”。

  • false —— 表示“no(否)”,“wrong(错误)”或“not the truth(非真)”。

示例:

/**/
alert( 2 > 1 );  // true(正确/成立)
alert( 2 == 1 ); // false(错误/不成立)
alert( 2 != 1 ); // true(正确/成立)

和其他类型的值一样,比较的结果可以被赋值给任意变量:

let result = 5 > 4; // 把比较的结果赋值给 result
alert( result ); // true

非数值的比较

(1)对于非数值进行比较时,会将其转换为数字然后再比较。

举例如下:

/**/
console.log(1 > true); //false
console.log(1 >= true); //true
console.log(1 > "0"); //true

console.log(10 > null); //true
console.log(10 < undefined); // false
//任何值和NaN做任何比较都是false

console.log(10 <= "hello"); //false
console.log(true > false); //true

(2)特殊情况:如果符号两侧的值都是字符串时,不会将其转换为数字进行比较。

在比较字符串的大小时,会依次按照字母的unicode编码值比较。

/**/
alert( 'Z' > 'A' ); // true
alert( 'Glow' > 'Glee' ); // true
alert( 'Bee' > 'Be' ); // true

字符串的比较算法非常简单:

  1. 首先比较两个字符串的首位字符大小。
  2. 如果一方字符较大(或较小),则该字符串大于(或小于)另一个字符串。算法结束。
  3. 否则,如果两个字符串的首位字符相等,则继续取出两个字符串各自的后一位字符进行比较。
  4. 重复上述步骤进行比较,直到比较完成某字符串的所有字符为止。
  5. 如果两个字符串的字符同时用完,那么则判定它们相等,否则未结束(还有未比较的字符)的字符串更大。

在上面的例子中,'Z' > 'A' 在算法的第 1 步就得到了返回结果,而字符串 GlowGlee 则继续逐个字符比较:

  1. GG 相等。
  2. ll 相等。
  3. oe 大,算法停止,第一个字符串大于第二个。

==符号的强调

注意==这个符号,它是判断是否等于,而不是赋值。

(1)==这个符号并不严谨,会将不同类型的东西,转为相同类型进行比较(大部分情况下,都是转换为数字)。例如:

/**/
console.log("6" == 6); // 打印结果:true。这里的字符串"6"会先转换为数字6,然后再进行比较
console.log(true == "1"); // 打印结果:true

(2)NaN 不和任何值相等,包括他本身。

console.log(NaN == NaN); //false

===严格相等符号的强调

如果要保证完全等于,我们就要用三个等号===全等不会做类型转换。例如:

/**/
console.log("6" === 6); //false
console.log(6 === 6); //true

上述内容分析出:

  • ==两个等号,不严谨,”6”和 6 是 true。

  • ===三个等号,严谨,”6”和 6 是 false。

另外还有:==的反面是!====的反面是!==例如:

console.log(3 != 8);  //true
console.log(3 != "3"); //false,因为3=="3"true,所以反过来就是falseconsole.log(3 !== "3"); //true,应为3==="3"false,所以反过来是true

对 null 和 undefined 进行比较 (了解)

当使用 nullundefined 与其他值进行比较时,其返回结果常常出乎你的意料。

当使用严格相等 === 比较二者时,它们不相等,因为它们属于不同的类型。

/**/
alert( null === undefined ); // false

当使用非严格相等 == 比较二者时,二者相等。

/**/
alert( null == undefined ); // true

当使用数学式或其他比较方法 < > <= >= 时:

null/undefined 会被转化为数字:null 被转化为 0undefined 被转化为 NaN

/**/
alert( null > 0 );  // (1) false
alert( null == 0 ); // (2) false
alert( null >= 0 ); // (3) true
文档更新时间: 2022-03-31 09:13   作者:张老师