美文网首页程序员
【基础】JavaScript数据类型介绍

【基础】JavaScript数据类型介绍

作者: 毛三十 | 来源:发表于2017-04-18 16:06 被阅读0次

    1 前言

    JavaScript有六种数据类型:Undefined、Null、Boolean(布尔)、Number(数字)、String(字符串)、Object(对象)。

    2 数据类型判定

    在JavaScript中使用typeof操作符来确定数据类型。

    //输出 undefined
    console.log(typeof undefined);
    //输出 object
    console.log(typeof null);
    //输出 boolean
    console.log(typeof true);
    //输出 number
    console.log(typeof 42);
    //输出 string
    console.log(typeof "42du");
    //输出 object
    console.log(typeof new Object());
    //输出 function
    console.log(typeof function(){});
    

    上述代码中的typeof "42du"也可以写成typeof("42du")这种形式。需要注意的是typeof null返回object,null被看成是一种空的对象引用。

    3 undefined类型

    当对象用var定义,未被初始化,则对象值为undefined。

    var u_name;
    //输出 undefined
    console.log(u_name);
    //抛出引用错误,u_age未定义 
    console.log(u_age);
    

    4 null类型

    null表示空的对象指针,调用typeof返回object。

    var u_name = null;
    //输出 object
    console.log(u_name);
    //输出 true
    console.log(null == undefined);
    

    5 布尔(Boolean)类型

    布尔类型只有两个值true和false,因为javascript是大小写敏感的,所以True或其它都不是布尔值。

    所有其它类型都可以利用'Boolean()'转化成布尔型。

    //空自符串输出 false
    console.log(Boolean(""));
    //非空自符串输出 true
    console.log(Boolean("42du"));
    //0和NaN输出 false
    console.log(Boolean(0));
    //任何非0数字(包括infinity)输出 true
    console.log(Boolean(42));
    //null输出 false
    console.log(Boolean(null));
    //任何对象输出 true
    console.log(Boolean(new Object()));
    //undefined输出 false
    console.log(Boolean(undefined));
    var u_name = "42du";
    //自动转化成Boolean类型
    if(u_name) {
        console.log("自动布尔转换");
    }
    

    6 数字(Number)类型

    数字类型即用来表示整型数,也用来表示浮点数。数字的表示可以用8进制(以0开头)或16进制(以0x开头)表示,但在计算中都是按照10进制数进行。

    //8进制,输出 34
    console.log(042);
    //不正确的8进制按10进制处理,输出 69
    console.log(069);
    //16进制可以是大写的A至F,输出 42
    console.log(0x2A);
    //16进制可以是小写的a至f,输出 42
    console.log(0x2a);
    //E表示法,10的3次方,输出 4200
    console.log(4.2e3);
    //E表示法,10的-3次方,输出 0.0042
    console.log(4.2e-3);
    //最大数,输出 1.7976931348623157e+308
    console.log(Number.MAX_VALUE);
    //最小数,输出 5e-324
    console.log(Number.MIN_VALUE);
    //有穷数判定,输出 true
    console.log(isFinite(42));
    //有穷数判定,输出 false
    console.log(isFinite(Number.MAX_VALUE+Number.MAX_VALUE));
    //浮点数值精确17位小数,不足够精确
    var a = 0.4,b=0.2;
    //得不到输出,永远不要做浮点数值判定
    if(a + b == 0.6) {
        console.log("02 + 0.4 = 0.6");
    }
    //输出 0.6000000000000001
    console.log(a+b);
    

    6.1 NaN

    NaN(Not a Number)是一个特殊的数字表示。任何包括NaN的操作都返回一个NaN,NaN不等于任何值,包括NaN自己。

    //输出 NaN
    console.log(NaN / 10);
    //输出 false
    console.log(NaN == NaN);
    //输出 true
    console.log(isNaN(NaN));
    //输出 false
    console.log(isNaN(42));
    //可以转化为数字42,输出 false
    console.log(isNaN("42"));
    //输出 true
    console.log(isNaN("42du"));
    //true可以转化为数字1,输出 false
    console.log(isNaN(true));
    

    6.2 数值转换

    共有三种数值转换的函数,分别是Number()parseInt()parseFloat()Number()可用来转换任何数据类型,parseInt()parseFloat()用来转换字符串类型。

    6.2.1 Number转换
    //输出 1
    console.log(Number(true));
    //输出 0
    console.log(Number(false));
    //输出 0
    console.log(Number(null));
    //输出 NaN
    console.log(Number(undefined));
    //输出 0
    console.log(Number(""));
    //输出 NaN
    console.log(Number("Hello 42du"));
    //输出 42
    console.log(Number("042"));
    //输出 42
    console.log(Number("0x2a"));
    
    6.2.2 parseInt转换
    //输出 NaN
    console.log(parseInt(""));
    //输出 42
    console.log(parseInt("42du"));
    //输出 42
    console.log(parseInt("42.5"));
    //输出 42
    console.log(parseInt("042"));
    //输出 42
    console.log(parseInt("0x2a"));
    //输出 42
    console.log(parseInt("2a",16));
    
    6.2.3 parseFloat转换
    //输出 42
    console.log(parseFloat("42du"));
    //输出 42.5
    console.log(parseFloat("42.5.5"));
    //输出 42.5
    console.log(parseFloat("042.5"));
    //输出 0
    console.log(parseFloat("0x2a"));
    //输出 42000000
    console.log(parseFloat("4.2e7"));
    

    6 字符串(String)类型

    字符串类型用来表示一系列16位Unicode字符序列。可以用单引号或双引号来定义,二者等价。String对象是不可变对象。

    var name = "42du";
    //输出 4
    console.log(name.length);
    

    6.1 字面值

    字面值 意义
    \n 换行符
    \t 制表符
    \b 退格
    \r 回车
    \f 分页符
    \ 反斜杠(\)
    ' 单引号
    " 双引号
    \xnn 十六进制代码nn表示的字符
    \unnnn 十六进制代码nnnn表示的Unicode字符

    6.2 转换成字符串

    var num = 42;
    //输出 42
    console.log(num.toString());
    //输出 101010
    console.log(num.toString(2));
    //输出 52
    console.log(num.toString(8));
    //输出 2a
    console.log(num.toString(16));
    //输出字符串 null
    console.log(String(null));
    //输出字符串 true
    console.log(String(true));
    //输出字符串 undefined
    console.log(String(undefined));
    

    7 对象(Object)类型

    直接创建

    var student = new Object();
    student.name = "iFat3";
    student.age = 36;
    //输出 true
    console.log(student.hasOwnProperty("name"));
    //输出 true
    console.log(student.propertyIsEnumerable("name"));
    //输出 Object { name: "iFat3", age: 36 }
    console.log(student.valueOf());
    //输出 [object Object]
    console.log(student.toString());
    

    或者写成

    var student={name:"iFat3",age:36};
    

    对象构造

    function student(name,age) {
        this.name = name;
        this.age = age;
        this.changeName=changeName;
        function changeName(name) {
            this.name = name;
        }
    }
    var stu2 = new student('iFat3',36);
    //输出 Object { name: "iFat3", age: 36, changeName: changeName() }
    console.log(stu2.valueOf());
    stu2.changeName('iFat4');
    //输出 Object { name: "iFat4", age: 36, changeName: changeName() }
    console.log(stu2.valueOf());
    

    相关文章

      网友评论

        本文标题:【基础】JavaScript数据类型介绍

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