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"
}