简单说"=="是相同,"==="是严格相同。
①"=="需要先进行数据类型判断是否相同。
一、如果数据类型相同,直接进行"==="比较
二、如果数据类型不同,则要
进行数据类型的转换
1.如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。
console.log(0=='0') //true
2.如果一个值是true则要先转换成1再进行比较,是false要先转换成0。
console.log(true==1) //true
3.如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。(详细去查阅valueOf,toString方法)
var obj = new String('0'); //object
console.log(obj=='0') //true
4.一个是Null,一个是Undefined,那么相等:
console.log(null==undefined)//true
Javascript规范中要比较相等性之前,不能将 null 和 undefined 转换成其他任何值,并且规定null 和 undefined 是相等的。null和undefined都代表无效的值。
而且全等于状态下,是false,因为它们不属于同一数据类型。
Null和Undefined的区别:
undefined 表示一个变量自然的、最原始的状态值,而 null 则表示一个变量被人为的设置为空对象,而不是原始状态。所以,在实际使用过程中,为了保证变量所代表的语义,不要对一个变量显式的赋值 undefined,当需要释放一个对象时,直接赋值为 null 即可。
②=== 绝对相等,即数据类型与值都必须相等。
(1)如果类型不同,就一定不相等
(2)如果两个都是数值,并且是同一个值,那么相等;如果其中至少一个是NaN,那么不相等。(判断一个值是否是NaN,只能使用isNaN( ) 来判断):
NaN的意思是Not a number,只要isNaN的参数可以被转化为数字那么就是false,反之为true
var a = '456',age = 18,name='456';
console.log(isNaN(age));//false
var b = 10;
console.log(isNaN(b));//false
var c = '我是字符串';
console.log(isNaN(c));//true
var d = '10';
console.log(isNaN(d));//false
var e = undefined;
console.log(isNaN(e));//true
(3)如果两个都是字符串,每个位置的字符都一样,那么相等,否则不相等。
console.log("String"==="string")//false
console.log("String"==="String")//true
(4)如果两个值都是true,或都是false,那么相等,否则不相等
console.log(true===true)//true
console.log(false===true)//false
(5 如果两个值都引用同一个对象或函数,那么相等,即两个对象的物理地址也必须保持一致;否则不相等。
(6)如果两个值都是null,或都是undefined,那么相等,否则不相等
console.log(undefined===undefined)//true
console.log(undefined===null)//false
未来可期 一起加油!

651

被折叠的 条评论
为什么被折叠?



