J14 两个值比较

204 阅读1分钟

1.== 与 === 在JS中,比较两个值是否相等

  • 1.== 相等(相等比较中,如果左右两边数据类型不同,则默认先转换为相同的数据类型(隐式转换规则 ),然后再进行比较)
    • 1.NaN==NaN =>false NaN和任何值(包含自己本身)都不相等
    • 2.Infinity==Infinity =>true Infinity只和自己相等,和其它值都不相等
    • 3.Symbol(1) == Symbol(1) =>false
    • 4.对象 == 对象 比较的是内存地址
    • 5.null==undefined =>true null和undefined两个等号比较是相等的,三个等号比较是不相等的,除此之外,他们和任何值相比较都不相等
    • 6.对象==字符串 对象转换为字符串
    • 7.除上述规则外,其余的都是把值转换为数字类型,然后再比较
console.log([10] == '10'); //=>'10'=='10'   true
console.log({} == '{}'); //=>'[object Object]'=='{}'  false
console.log(1 == true); //=>1==1   true
console.log(2 == true); //=>2==1   false
console.log(-1 == false); //=>-1==0  false
console.log(0 == false); //=>0==0  true
console.log(1 == '1'); //=>1==1  true
console.log(true == '1'); //=>1==1  true  
console.log(false == ''); //=>0==0  true
console.log([] == 0); //=>0==0 true 
  • 2.==== 绝对相等(需要保证左右两边数据类型和值都一样,才会相等,只要有一样不一样,结果都是不相等的)
  • Object.is
console.log(10 == "10"); //=>TRUE  默认先把"10"->10,然后再比较
console.log(10 === "10"); //=>FALSE
 console.log("10" === "10"); //=>TRUE
 isNaN(NaN) == ""  条件是否成立 
 
=> isNaN(NaN) =>true
=>  true==""  两个等于号比较,默认会转换数据类型(此处都转换为数字,再进行比较) 
=> 1==0 条件是不成立的
if (isNaN(NaN) == "") {
	console.log("Hello")
} else {
	console.log("Hi") //=>"Hi"
}