在这个函数中,当比较数组的长度时,它被使用!=运算符,当它比较它所使用的数组的所有元素时!==运算符。为什么?! 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;
}
答案 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]
答案 2 :(得分:2)
=
是一个赋值运算符,例如如果您运行var x = 1;
,则x
的值为1
。
==
(或!=
)是一个比较运算符,用于检查某事物的值是否等于其他值的值。例如if(x == 1)
将评估为true
,因此if(x == true)
会评估1
评估为true
,0
评估为false
。< / p>
===
(或!==
)是另一个比较运算符,用于检查某事物的值是否等于其值,并且与其他事物的类型相同。例如if(x === 1)
将评估为true
但if(x === true)
将评估为false
,因为1
(x
的值)是一个整数而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)。