如何判断两个变量的值是否相等

1.相关代码

 function isObject (obj) {
    return Object.prototype.toString.call({}).slice(8,-1) === 'object'
}
function looseEqual (a, b) {
    if (a === b) return true
    const isObjectA = isObject(a)
    const isObjectB = isObject(b)
    if (isObjectA && isObjectB) {
      try {
        const isArrayA = Array.isArray(a)
        const isArrayB = Array.isArray(b)
        if (isArrayA && isArrayB) {
          return a.length === b.length && a.every((e, i) => {
            return looseEqual(e, b[i])
          })
        } else if (a instanceof Date && b instanceof Date) {
          return a.getTime() === b.getTime()
        } else if (!isArrayA && !isArrayB) {
          const keysA = Object.keys(a)
          const keysB = Object.keys(b)
          return keysA.length === keysB.length && keysA.every(key => {
            return looseEqual(a[key], b[key])
          })
        } else {
          return false
        }
      } catch (e) {
        return false
      }
    } else if (!isObjectA && !isObjectB) {
      return String(a) === String(b)
    } else {
      return false
    }
}
复制代码

2.使用场景

    //定义
    var a = NaN, a1 = NaN
    var b = new Date('2019'), b1 = new Date('2019')
    var c = {name:'jack',age:23}, c1 = {name:'jack',age:23}
    var d = [1,2,3], d1 = [1,2,3]
    
    //使用前
    a === a1 //false
    b === b1 //false
    c === c1 //false
    d === d1 //false
    
    //使用后
    looseEqual (a, a) //true
    looseEqual (b, b1) //true
    looseEqual (c, c1) //true
    looseEqual (d, d1) //true
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值