!= 和 !== 之间的区别

26

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

在这个函数中,当比较数组长度时使用 != 运算符,而当比较数组中的所有元素时使用 !== 运算符。这是因为 != 运算符只会比较值是否相等,而忽略数据类型;而 !== 运算符会同时比较值和数据类型是否相等。

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;

}


2
这是一个 "if a[i] 等于 " b[i]" 的条件语句,而在 equalArrays() 函数中没有太多意义。 - Maximilian Gerhardt
2
请参考这篇这篇文章,了解=====的区别;而!=!==则是相应的否定比较。 - Alexander Nied
1
请仔细检查您的代码。它是 !== 还是 ==! - PM 77-1
区别在于 != 用于比较两种不同类型,例如:如果您要比较一个变量和一个字符串,但如果您比较一个字符串和一个字符串或一个变量和一个变量,它仍然可以工作。而 !== 只比较相同类型,因此它不能用于变量和字符串的比较。 - Pritam Prince
5个回答

49

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

==(或 !=)是一个比较运算符,用于检查某个值是否等于另一个值。例如:if(x == 1) 将求值为 trueif(x == true) 同样也会求值为 true,因为 1 求值为 true,而 0 求值为 false

===(或 !==)是另一种比较运算符,它检查某个值是否与另一个值相等并且类型也相同。例如:if(x === 1) 将求值为 true,但是 if(x === true) 将求值为 false,因为 1(即 x 的值)是一个整数,而 true 是一个布尔值。


24

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

以下为真:

false == false
false == 0
2 == "2"

以下内容是不正确的:

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

几年后回来看这个...不得不编辑我的回答,因为以下原因

false != undefined
false != null
null == undefined

9

!= 只会检查值是否相等,不考虑操作数的类型。但是 !== 用于比较被比较的两个操作数的值和类型。

当比较数组的长度时,显然它们都是整数,因此无需比较它们的类型。但是为了比较数组中的元素,它们的类型很重要。例如,假设它正在比较长度为5的字符串和整数5:

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

上面的代码片段将返回false,因为两个操作数是不同类型的。但这不能被!=捕获,我的意思是:
if( '5' != 5 ){
    return false;
}else{
    return true;
}

将返回true。

作为一个经验法则,记住:

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

  • 当两个字符串具有相同的字符序列,相同的长度和对应位置的相同字符时,它们就是严格相等的。

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

  • 如果两个布尔操作数都为true或都为false,则它们是严格相等的。

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

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

引自:https://dev59.com/EnRB5IYBdhLWcg3wv5xA#523647


1

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


0

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

来源:W3Schools


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接