【问题标题】:Difference between != and !== [duplicate]!= 和 !== 之间的区别 [重复]
【发布时间】:2026-02-15 20:55:01
【问题描述】:

在这个函数中,当它比较数组的长度时,它使用 != 运算符,当它比较数组的所有元素时,它使用 !== 运算符。为什么?!谢谢。

var a = [1,2,3];
var b = [2,3,4];

function equalArrays(a,b){      
    if(a.length != b.length) return false;
    for(var i = 0; i < a.length; i++)
        if(a[i] ==! b[i]) return false;
    return true;

}

【问题讨论】:

  • 这是一个“如果a[i] is 等于“not b[i]”并且在equalArrays() 函数中没有什么意义
  • 请参阅thisthis 的帖子以比较=====!=!== 只是各自的否定比较。
  • 请仔细检查您的代码。是!== 还是==!
  • 不同之处在于 != 用于比较两种不同的类型,例如:如果您正在比较一个变量和一个字符串,但如果您比较一个字符串和一个字符串或一个 var 和一个var 而 !== 所做的只是比较相同的类型,因此它不会与 var 和字符串一起使用

标签: javascript


【解决方案1】:

当元素不相等值或不相等类型时,!== 运算符返回 true。

来源:W3Schools

【讨论】:

    【解决方案2】:

    三等号 (===) 不仅检查值,而且检查类型。

    以下是正确的:

    false == false
    false == null
    false == undefined
    false == 0
    2 == "2"
    

    以下说法不正确:

    false === null
    false === undefined
    false === 0
    2 === "2"
    

    【讨论】:

    • 不错的简单答案 +1
    【解决方案3】:

    !==表示正在检查两个变量的值和值类型(8!==8 将返回 false,而 8!=="8" 返回 true)。 != 只检查变量的值(8!=88!="8" 都会返回 false)。

    【讨论】:

      【解决方案4】:

      != 只会检查值,而不管操作数类型如何。但!== 用于比较正在相互比较的 2 个操作数的值和类型。

      当它比较数组的长度时,很明显它们都是整数,所以不需要比较它们的类型。但是为了比较数组中的元素,它们的类型很重要。例如假设它的比较字符串 5 和整数 5:

      if( '5' !== 5 ){
          return false
      }else{
          return true;
      }
      

      上面的 sn-p 将返回 false,因为两个操作数的类型不同。但这不能被!=抓到,我的意思是:

      if( '5' != 5 ){
          return false;
      }else{
          return true;
      }
      

      将返回 true。

      根据经验,请记住:

      JavaScript 有严格的和类型转换的相等比较。为了严格相等,被比较的对象必须具有相同的类型并且:

      • 两个字符串在字符序列相同、长度相同、对应位置相同的情况下是严格相等的。

      • 当两个数字在数值上相等(具有相同的数值)时,它们是严格相等的。 NaN 不等于任何东西,包括 NaN。正零和负零彼此相等。

      • 如果两个布尔操作数都为真或都为假,则两个布尔操作数严格相等。

      • 如果两个对象引用同一个对象,则它们是严格相等的。

      • Null 和 Undefined 类型是 ==(但不是 ===)。 [IE。 (Null==Undefined) 为真,但 (Null===Undefined) 为假]

      引用自:https://*.com/a/523647

      【讨论】:

        【解决方案5】:

        = 是赋值运算符,例如如果您运行var x = 1;,那么x 的值将是1

        ==(或!=)是一个比较运算符,用于检查某事物的值是否等于其他事物的值。例如if(x == 1) 将评估为trueif(x == true) 也将评估为1 将评估为true0 评估为false

        ===(或!==)是另一个比较运算符,它检查某事物的值是否等于某事物的值,并且是否与其他事物的类型相同。例如if(x === 1) 将评估为 true 但是,if(x === true) 将评估为 false 因为 1x 的值)是一个整数,true 是一个布尔值。

        【讨论】:

        • 简短而甜美而清晰的答案。谢谢。
        最近更新 更多