第一种 ===
function identity(val1, val2) { return val1 === val2 }
第二种 es6新语法
Object.is()
方法判断两个值是否为同一个值,如果满足以下任意条件则两个值相等:
- 都是
undefined
- 都是
null
- 都是
true
或都是false
- 都是相同长度、相同字符、按相同顺序排列的字符串
- 都是相同对象(意味着都是同一个对象的值引用)
- 都是数字且都是 +0都是 -0都是 NaN都是同一个值,非零且都不是 NaN
Object.is()
与 ==
不同。==
运算符在判断相等前对两边的变量(如果它们不是同一类型)进行强制转换(这种行为将 "" == false
判断为 true
),而 Object.is
不会强制转换两边的值。
Object.is()
与 ===
也不相同。差别是它们对待有符号的零和 NaN 不同,例如,===
运算符(也包括 ==
运算符)将数字 -0
和 +0
视为相等,而将 Number.NaN
与 NaN
视为不相等。
function identity(val1, val2) { return Object.is(val1,val2) }
判断了类型相同再判断值
不知道为什么三目运算符写出来的结果不能用
function identity(val1, val2) { if(typeof val1 == typeof val2){ if(val1 == val2){ return true }else{ return false } }else{ return false } }