JS基础-变量类型和计算

133 阅读1分钟

typeof 能判断哪些类型?

  • 能判断 所有的值类型
  • 能判断函数
  • 能判断引用类型(不细分, 所有的是object)

值类型有哪些?

number、string、undefined、boolean、symbol(可能不全)

值类型和引用类型的区别?

  • 值类型拷贝, 值不会有任何关联
  • 引用类型拷贝, 值修改,同步修改, 大家指向的是一个地址

通常不会直接问, 基本是出题目, 直接问不好表达

手写深拷贝

写一个最基础的就可以了, 等你写完循环引用, Map Set类型的处理天都黑了

function deepCopy(obj = {}) {
  if(typeof obj !== 'object' || typeof obj === null) {
    return obj
  }

  let resolve;
  if(obj instanceof Array){
    resolve = []
  } else {
    resolve = {}
  }

  Object.keys(obj).forEach(key=> {
    resolve[key] = deepCopy(obj[key])
  })
  return resolve
}

何时使用===, 何时使用==?

  • 两等存在隐式转换并不推荐使用

  • 推荐使用三等

  • 根据各大开源库使用的习惯是 除了 null 用两等其他都三等

  • == null 等同与 === null || === undefined