第一种 ===

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