zoukankan      html  css  js  c++  java
  • js的数据类型

    总体来讲有 五种基本类型,一个复杂类型,一个新增 symbol 共七种数据类型

    一. 常见的数据类型有 es5

     1 基本类型:Number,String,Boolean,Null,undefined

      引用类型:object (Object,Array,Function,Date,RegExp)

    2 基本的数据类型是不可以改变的,只有对象可以改变。

     (1) 基本数据类型的检测用typeof 操作符,所有的返回值都是字符串;可能有以下几种:'undefined'、'boolean'、'string'、'number'、'object'、'function'

     (2) 其中,使用 typeof 检测 object array date regexp 返回都是 object

                自定义函数或者构造函数返回的是 function

                null 返回的是object

      (3) null 和undefined 的区别

            1)null是一个对象,typeof返回object, 这个是js中的一个bug,在进行二进制转换过程中,如果前三位都是0,则ypeof时就返回object,而null转换为二进制时所用的位都是0

                  undefined不是一个对象typeof 返回的是undefined

       2)null 是一个关键字,undefined不是关键字

       3)null 转化为数字是 0 ,undefined是NaN

    Number(null) === 0 // true
    isNaN(Number(undefined)) === true  // NaN

           4)定义不同

            javaScript权威指南: null 和 undefined 都表示“值的空缺”,你可以认为undefined是表示系统级的、出乎意料的或类似错误的值的空缺,而null是表示程序级的、正常的或在意料之中的值的空缺。

      null: Null类型,代表“空值”,代表一个空对象指针,使用typeof运算得到 “object”,所以你可以认为它是一个特殊的对象值。

      undefined: Undefined类型,当一个声明了一个变量未初始化时,得到的就是undefined。

      null是javascript的关键字,可以认为是对象类型,它是一个空对象指针,和其它语言一样都是代表“空值”,不过 undefined 却是javascript才有的。undefined是在ECMAScript第三版引入的,为了区分空指针对象和未初始化的变量,它是一个预定义的全局变量。没有返回值的函数返回为undefined,没有实参的形参也是undefined。

      null和undefined相同点

            1)都是值类型

       2)转化为Boolean都为false

    Boolean(null) === false // true
    Boolean(undefined) === false // true

      null 进行比较undefined

    null == undefined // true
    null === undefined // false

    二. es6 新的数据结构 (参考 http://es6.ruanyifeng.com/#docs/set-map

       1.symbol 新引入的原始数据类型

          1)  通过 Symbol(dscription)声明 表示独一无二的值

          2)使用 typeof 检测为 symbol

          3) 不能和其他值进行运算,否则会有类型错误

          4)作为对象的key 要使用 放入 [ ] 中

       2.map weakMap set WeakSet 

        1)map  [ [a,b ],[ 2, 3] ]

         键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。

        也就是说,Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适。

                   可以使用 size set get has delete clear keys values entries forEach

         2)set  

      新的数据结构,类似于数组。

      特点:成员值唯一,没有重复的值,不可使用数组的方法

          可以使用 add delete has size keys values entries forEach

      // 去除数组的重复成员
      [...new Set(array)]
    // 字符串去重
      [...new Set('ababbc')].join('')

    WeakSet 的成员只能是对象,而不能是其他类型的值 ,
    WeakSet 中的对象都是弱引用,即垃圾回收机制不考虑 WeakSet 对该对象的引用,也就是说,如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收该对象所占用的内存,不考虑该对象还存在于 WeakSet 之中

        使用 typeof 检测为 object

         instanceof 可以进行区分 

  • 相关阅读:
    android 属性动画
    android EventBus
    android gson使用
    Date、String、Calendar类型之间的转化
    2020-08-26:裸写算法:树的非递归先序遍历。
    2020-08-25:BloomFilter的原理以及Zset的实现原理。
    2020-08-24:什么是小文件?很多小文件会有什么问题?很多小文件怎么解决?(大数据)
    2020-08-23:描述HTTPS和HTTP的区别。
    2020-08-22:I/O多路复用中select/poll/epoll的区别?
    2020-08-21:网络IO模型有哪些?
  • 原文地址:https://www.cnblogs.com/lizhiwei8/p/11515686.html
Copyright © 2011-2022 走看看