JS中的数据类型

  • 基本数据类型:Number、String、Boolean、null、undefined、Symbol

  • 引用数据类型:object其中包含array、data、function等等

  • 涉及知识点:

    • 装箱和拆箱 let str = new String('string')

    • typeof

      结果
      undefined undefined
      'string' (字符串类型) string
      123、NaN number
      true,false boolean
      let a = Symbol('a') symbol
      {}、[]、null等 object
      function () {} function
    • undefined 和 null

      • null 表示这个值被定义了,但这个值为空,undefined 表示原本此位置该有值,但现在此值未定义
      • 两者在 if 判断语句中,都会被转换为false
      • undefined派生自null,因此在用 == 判断时为 ture
      • undefined 表示未定义,而 null 则未空
      • 在 Number 中的转换值不同,Number(null)的值未0,而Number(undefined) 的值为NaN
      • typeof(undefined) 的值为 undefined 而typeof(null) 的值为 object
    • NaN

      • 含意为 Not a number,用来检测是否为数字
      • NaN并不等于自身,如 Number(test`)==NaN 值为false
      • isNaN() 用来判断该值是否为 NaN,还可以使用 Object.is(NaN,NaN)
      • typeof 的值为 number
    • 0.1+0.2 结果不为0.3

      • 原因,基于IEEE754数值的浮点计算的通病。
      • 解决方法,可以使用其他方式进行判断,如(0.1*10+0.2*10)/10 == 0.3或者可以使用Number.EPSILON 来进行判断 0.1+0.2-0.3<Number.EPSILON
    • 数组检测方法

      • instanceof 判断是否在一条原型链上 arr instanceof Array
      • constructor 属性进行判断 arr.constructor == Array
      • Array.isArray 检测是否为数组
      • typeof 也可以进行判断,只不过麻烦一点 typeof arr.__proto__.push == function() 用typeof判断实例的原型中是否有 Array 的方法,如果有,就为数组
    • == 和 ===

      • 双等表示值相同,类型可以不同,===表示类型也必须相同
    • Object 的知识点过于多,建议寻找更系统的资料查看

    • BigInt 类型:是一种内置对象,可以表示大于 253 的整数。而在Javascript中,Number 基本类型可以精确表示的最大整数是 253。BigInt 可以表示任意大的整数。在MDN中被归为基本数据类型

posted @ 2020-11-26 17:01  土狗一号  阅读(76)  评论(0)    收藏  举报