!=和!==之间的区别

时间:2017-02-28 20:03:00

标签: javascript

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

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;

}

5 个答案:

答案 0 :(得分:10)

三等于(===)不仅检查值,还检查类型。

以下是真实的:

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

以下情况并非如此:

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

答案 1 :(得分:3)

无论操作数类型如何,

!=都只会检查值。但!==用于比较价值和价值。彼此比较的2个操作数的类型。

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

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

上面的代码段将返回false,因为两个操作数关闭了不同的类型。但这不能被!=抓住,我的意思是:

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

将返回true。

根据经验,请记住:

  

JavaScript具有严格和类型转换相等性比较。对于严格相等,要比较的对象必须具有相同的类型和:

     
      
  • 两个字符串在相应位置具有相同的字符序列,相同的长度和相同的字符时严格相等。

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

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

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

  •   
  • Null和Undefined类型是==(但不是===)。 [即(Null == Undefined)为true但是(Null === Undefined)为false]

  •   

引自:https://stackoverflow.com/a/523647

答案 2 :(得分:2)

=是一个赋值运算符,例如如果您运行var x = 1;,则x的值为1

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

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

答案 3 :(得分:0)

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

来源:W3Schools

答案 4 :(得分:0)

8!=="8"表示正在检查两个变量的值及其值类型(!=将返回false而8!=8返回true)。 8!="8"仅检查变量的值(angular.module('resources', ['$resource']) .factory('Images', function($resource) { return $resource(baseUrlGoesHere + '/images', {}, {}) }) Images.get()都会返回false)。