美文网首页饥人谷技术博客
JavaScript中的几种数据类型

JavaScript中的几种数据类型

作者: 赫鲁晓夫的玉米棒子 | 来源:发表于2017-04-16 14:29 被阅读0次

    JavaScript定义了几种数据类型?哪些是原始类型?原始类型和复杂类型的区别是什么?
    ECMAScript中有5种简单数据类型(也称为基本数据类型):Undefined,Null,Boolean,Number,String.
    其中Boolen,Number,String为原始数据类型,Undefined,Null一般将其看为特殊值。
    1种复杂数据类型:Object.
    Object本质上是由一组无序的名值对组成的。
    ES6中新出了一个Symbol类型
    ECMAScirpt不支持任何创建自定义类型的机制,而所有值最终都将是上述7种数据类型之一。

    • Unndefined类型:该类型只有一个值,即特殊的undefined。在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。无论在什么情况下都没有必要把一个变量的值显式地设置为undefined
    • Nunll类型:该类型同样只有一个值,即null。从逻辑角度来看,null表示一个空的之争对象,而这也正式使用typeof操作符检测null值时会返回object的原因。事实上,undefined值是派生自null值的。如下所示:
    alert( null == undefined);    //true
    

    尽管nullundefined有这样的关系,但它们的用途完全不同。只要意在保存对象的变量还没有真正保存对象,就该明确的让该变量保存null值。这样不仅可以体现null作为空对象指针的惯例,而且也有助于进一步区分nullundefined

    • Boolean类型:该类型有两个值:truefalse,并且着两个值是区分大小写的。ECMAScript中所有类型的值都有与这两个Boolean值等价的值,这些转换规则对理解流控制语句(如if语句)自动执行相应的Boolean转换非常重要:
    数据类型 转换为true的值 转换为false的值
    Boolean true false
    String 任何非空字符串 " "(空字符串)
    Number 任何非零数字值(包括无穷大) 0 和 NAN
    Object 任何对象 null
    Undefined n/a(不适用) undefined
    • Number类型:最基本的数值字面量格式是十进制整数,整数还可以通过八进制、十六进制来表示,如下写法:
    var intNum = 55;    十进制整数
    var octalNum1 = 070;      八进制整数——56,第一位必须是 0 然后是八进制数字序列(0-7)
    var octalNum2 = 079;      无效的八进制数值,解析为十进制79
    var hexNum1 = 0xA;      十六进制整数——10,前两位必须是0x,后跟任何十六进制数字。其中,字母A~F可以大写也可以小写。
    var hexNum2 = 0x1f;      十六进制整数——31
    

    在进行算数计算时,所有以八进制和十六进制表示的数值最终都将被转换为十进制数值。
    Number类型中也包含了浮点数。所谓浮点数就是该数值中必须包含一个小数点,并且小数点后面必须至少有一个数字,虽然小数点前面可以没有整数,但是不推荐这种写法。
    ECMASctipt中通常会将小数点后面带有6个零以上的浮点数值转换为以 e 表示法表示的数值(如0.0000003会被转换成3e-7)。
    浮点数值最高精度是17位小数,但在进行算数计算时其精确度远远不如整数。例如:

    var a = 0.1;
    var b = 0.2;
    alert(a+b);    //0.30000000000000004
    

    在大多数浏览器中能保存的最小数值为5e-324;最大数值为1.7976931348623157e+308。如果计算结果超出了这两个值,那么这个数值将自动转换为特殊的Infinity值,正无穷为Infinity,负无穷为-Infinity。Infinity是不能参与计算的数值,用isFinite()函数可以测试一个数值是否在最大和最小数值之间,如果在则返回true
    NaN,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。任何涉及到NaN的操作都会返回NaN,并且NaN与任何值都不相等,包括NaN本身。通过isNaN()函数可以确定一个参数是否“不是数值”。

    alert(isNaN(NaN));      //true
    alert(isNaN(10));       //false(10是一个数值)
    alert(isNaN("10"));     //false (可以被转换为数值10)
    alert(isNaN("blue"));   //true (不可以被转换成数值)
    alert(isNaN(true));     //false (可以被转换成数值1)
    
    • String类型:用于表示由零个或多个16位Unicode字符组成的字符序列,即字符串。字符串可以由双引号或单引号表示。但是双引号开头必须双引号结尾,单引号开头单引号结尾。ECMAScript中字符串是不可变的,一旦创建,它们的值不可改变。必须通过销毁—重新填充,才能改变字符串的值。

    • Object类型:Object类型就是一组数据和功能的集合。在ECMAScript中Object类型是所有它的实例的基础。换句话说,Object类型所具有的任何属性和方法也同样存在与更具体的对象中。

    • 最新出了个Symbol的数据类型,其意义是生成一个全局唯一的值。
      Symbol参考地址

    相关文章

      网友评论

        本文标题:JavaScript中的几种数据类型

        本文链接:https://www.haomeiwen.com/subject/xuomattx.html