[面试仓库]JS基础知识汇总-数据类型篇

一,值类型和引用类型

值类型存储的是值,引用类型存储的是地址(指针)

常见的值类型

  • undefined
  • string
  • number
  • boolean
  • Symbol

常见的引用类型

  • object
  • array
  • function(特殊的引用类型)
  • null(特殊的引用类型,指向空地址)

二,typeof 的功能

  • 能够识别所有的值类型
  • 能够识别函数
  • 判断是否为引用类型(但不能做更深层次的判断)

三,手写深拷贝函数

function deepClone(obj) {
  //判断是否为引用类型
  if (typeof obj !== "object" || obj == null) {
    return obj;
  }

  //判断是数组还是对象
  let res;
  if (obj instanceof Array) {
    res = [];
  } else {
    res = {};
  }

  for (let key in obj) {
    if (obj.hasOwnProperty(key)) {
      //必须保证都是obj的属性,不是原型的属性
      res[key] = deepClone(obj[key]);
    }
  }
  return res;
}

四,=== 和 == 的使用场景

除了==null,其余的都用===

因为 == null 相当于=== null || === undefined

  另外,我们引入两个新的概念truly变量falsely变量

  • truly变量指的是!!a===true的变量
  • falsely变量指的是!!a===false的变量

除了 0、NaN、""(空字符串)、null、undefined、false,其余的全是 truly 变量

  我们来看两种运算

console.log(10 && 0); //0
console.log("" || "abc"); //'abc'

  对于与运算,结果总是返回falsely变量;对于或运算,返回的总是truly变量


  其他有关数据类型的问题,我会在此做出补充。

posted @ 2021-04-14 21:48  柠小宏  阅读(56)  评论(0)    收藏  举报