美文网首页
JavaScript七种数据类型简述

JavaScript七种数据类型简述

作者: LaobingFung | 来源:发表于2018-11-20 16:48 被阅读0次

    ES6中定义了7种数据类型:String, Number, Boolean, Symbol, Null, Undefined, Object,其中Symbol是ES6才新引入的数据类型。


    JavaScript拥有动态类型

    JavaScript的变量可以用来存储不同类型的数据

    var a = 1;
    a = 'mike';
    

    也是合法的。


    Undefined

    变量被声明时如果没有被赋值,那么变量的类型就是Undefined。


    Null

    Null类型只有一个值null,是空值的意思,可以通过给变量赋值设置为null,表示清空该变量。

    typeof(null) 返回 object

    在JavaScript中,typeof(null)的返回值是object,这并不是说值为null的变量的类型是object,这是一个历史遗留问题,1995年第一版的JavaScript所有值都用32位二进制数来存储,其中包括存储数据类型的标签和存储数据的值,而object类型的标签和null类型的标签都是000,因此typeof(null)的返回值是object,从逻辑上来讲,null也可以是空对象。

    但是,null的数据类型仍然是Null,typeof(null)返回object是一个历史遗留bug,而且应该不会被修复,因为这会影响到已有的代码。


    Boolean

    Boolean类型只有两个值,true和false,布尔型变量一般用于条件判断。

    其他类型的变量也可以通过Boolean()函数来转换成布尔型变量,其值对应表如下:

    type 转换为true 转换为false
    Undefined 不适用 undefined
    Null 不适用 null
    Number 非0,NaN的数字 0,NaN
    String 任何非空字符串 ''空字符串
    Symbol 任何对象 不适用
    Object 任何对象 null

    Number

    Number类型的值可以是-(2的63次方-1) ~ (2的63次方-1)的数字,+Infinity, -Infinity, NaN。
    Number类型的变量不区分整数和浮点数,很大或很小的数会通过科学记数法来表达。

    这里要注意的是,NaN与任何Number类型的值都不相等,包括NaN本身。


    String

    String类型用来存储文本,可以用单引号或双引号表示字符串

    var name = 'Jack';
    var name = "Jack";
    

    JavaScript中有多种操作String的方法,具体见JavaScript String 对象


    Symbol

    ES6引入Symbol的目的就在于引入一种机制,保证对象的每个属性名字都是独一无二的,防止属性名冲突。

    symbol值通过Symbol()函数生成,可以用作对象的属性名,如

    var name = Symbol();
    var age = Symbol();
    var student = {};
    student[name] = 'Jack';
    student[age] = 12;
    

    由于Symbol类型的变量是独一无二的,即使给Symbol()函数传入相同的参数,生成的Symbol变量也是不同的,因此

    var a = Symbol();
    var b = Symbol();
    var c = Symbol("name");
    var d = Symbol("name");
    a === b; //false
    c === d; //false
    

    Symbol类型的属性不能用for...in, for...of去遍历,需要用Object.getOwnPropertySymbols方法去遍历

    var a = Symbol();
    var b = Symbol();
    var c = Symbol();
    var car = {
        [a] : 'Benz',
        [b] : 'Tesla',
        [c] : 'Volvo'
    }
    for(let prop of Object.getOwnPropertySymbol(car)){
        document.write(car[prop]);
    }
    

    Object

    对象由{}声明,{}内的时形式为key: value的键值对,其中的key只能是Srting或者Symbol类型的变量,多个键值对之间用逗号隔开,如

    student = {
        name : 'Jack',
        age : 12,
        id : 2001    
    };
    

    相关文章

      网友评论

          本文标题:JavaScript七种数据类型简述

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