JavaScript比较运算符

作者: 微语博客 | 来源:发表于2021-07-13 23:14 被阅读0次

    比较运算符

    比较运算符我们在数学中也总能看到,它们用于比较两个数值大小,在程序中也使用广泛,本篇文章主要讲解JS的比较运算符。

    数值比较

    比较的时候如果两边都是数值的话,那就特别简单的直接比较大小,而如果有一边不是数值的话,本质上是无法进行大小比较的,这时候JavaScript会有一个默认转换过程。所有的比较运算都会返回一个布尔值,即true(对)或false(错)。

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

    • 大于 / 小于:a > ba < b
    • 大于等于 / 小于等于:a >= ba =< b
    • 检查两个值的相等:a == b,请注意双等号 == 表示相等性检查,而单等号 a = b 表示赋值。
    • 检查两个值不相等。不相等在数学中的符号是,但在 JavaScript 中写成 a != b。(注意是英文输入法下的符号)
    • 严格等于a===b判断两个值的类型和值是否都相等,严格等于也可以叫恒等于。
    var x;
    x = 5 > 3;//x=true 5显然大于3
    var y;
    y = 5 < "3"; //y=false 这里的字符串“3”默认转换为数字3
    var z;
    z = 5 == "5";//z=true 
    var m;
    m = 5 === "5";//m=false 这里三个等号表示严格等于,严格等于不会类型转换
    

    字符串比较

    除了数字比较,字符串之间也有比较。在比较字符串的大小时,JavaScript 会使用“字典(dictionary)”或“词典(lexicographical)”顺序进行判定。换言之,字符串是按字符(母)逐个进行比较的。比如下面:

    console.log( 'Z' > 'A' ); // true
    console.log( "Bee" > "B" ); // true
    

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

    布尔值比较

    布尔类型值的转换与比较,在与布尔类型作比较时,即与true和false的比较,true会默认转换为1,false默认转换0。比如下面的比较:

    console.log( true == 1 );//true 因为true默认转为1
    console.log( false == 0 );//true false转为0
    console.log( true === 1 );//false 严格等于错误
    

    null undefined 0 false NaN

    null undefined 0 false是四个比较特殊的值,比较如下:

    console.log( null == undefined );//true
    console.log( null === undefined );//false
    console.log( false == 0 );//true
    console.log( null == 0 );//false
    console.log( undefined == 0 );//false
    console.log( null == false );//false
    console.log( undefined == false );//false
    

    其中undefined最为特殊,undefined 不应该被与其他值进行比较:

    console.log( undefined > 0 ); // false
    console.log( undefined < 0 ); // false 
    console.log( undefined == 0 ); // false 
    

    undefined不与任何值相等是因为在大小比较时转换为一个更特殊的值NaN(Not a Number),也叫非数,非数与任何值都不相等包括它自己。但它比较相等时会和null相等,却不会和false相等。

    console.log( undefined == 0 ); // false
    console.log( undefined == false ); // false 
    console.log( undefined == NaN ); // false 
    console.log( NaN == NaN );//false NaN不与任何值相等,包括自己
    

    除了严格相等 === 外,其他但凡是有 undefined/null 参与的比较,我们都需要格外小心。除非你非常清楚自己在做什么,否则永远不要使用 >= > < <= 去比较一个可能为 null/undefined 的变量。对于取值可能是 null/undefined 的变量,请按需要分别检查它的取值情况。

    相关文章

      网友评论

        本文标题:JavaScript比较运算符

        本文链接:https://www.haomeiwen.com/subject/owrepltx.html