美文网首页
JavaScript - 数据类型

JavaScript - 数据类型

作者: 婆娘漂亮生活安逸 | 来源:发表于2018-12-18 16:20 被阅读0次

    本内容的介绍主要参考了《JavaScript高级程序设计》

    1. typeof 操作符

    * 用法:
       ```
        var book = '';
        typeof book;
        typeof(book);
        // typeof 是一个操作符,不是一个函数,因此圆括号不是必需的。
        ```
     * 返回值:
        只会返回以下列举的某个字符串:
        'undefined', 'boolean', 'string', 'number', 'object', 'function'。
    

    2. Undefined 数据类型

     该类型只有一个值,为特殊的 undefined。无需特意设置变量为 undefined。
      ```
       var book;
       console.log(type of book);
       // 打印值:undefined
       ```
    

    3. Null 类型

    该类型的值只有一个,为特殊的 null。表示一个空对象指针。
     ```
      var book = null;
      console.log(type of book);
      // 打印值:null
      ```
    

    虽然 null 与 undefined 的 相等操作符(==)返回 true,但是两者不为相同。undefined 无需特意为变量设置该值;但是如果变量确定为对象类型则明确让该变量保存为 null 值。

    4. Boolean类型

    该类型只有两个字面值:true 和 false。(该值区分大小写,意味着任何大小写混合形式的该值,都不是 Boolean 值。)
    
    • 各种数据类型->Boolean类型的转换方法:
       // 转化方法:Boolean();   
       var msg = 'Hello world';
       var msgAsBoolean = Boolean(msg);
       // 打印值:true
      
    • 各种数据类型->Boolean类型的转换规则:
    数据类型 转换为true的值 转换为false的值
    Boolean true false
    String 任何非空字符串 ''(空字符串)
    Number 任何非0数值(-∞,负数,正数,+∞) 0和NaN
    Obejct 任何对象 null
    Undefined undefined

    5. Number类型

    • 整数类型
    // 十进制
    55
    // 八进制:第一位必须是零(0),后面是八进制数字序列(0~7)。超出,直接当作十进制数值解析;
    070   => 35
    079   => 79
    // 十六进制:第一位必须是 0x,后面是十六进制数字序列(0~9A~F),字母不区分大小写。
    0xaa => 170
    0x1F => 31
    // 实际运算时,均转为十进制。
    
    • 浮点类型
    // 包含小数点,小数点前后至少一位数字
    1.1
    // 省略小数点前面的整数,不推荐
    .1
    //  省略小数点后面的整数,转换为整数
    1. => 1
    // 小数点后面为0
    10.0 => 10
    
    • 知识点如下:
      1>数值范围
      2>NaN
      3>数值转换:Number(), parseInt(), parseFloat()
    Number()转换规则:
    // 如果是Boolean值,true 和 false 转换为 1和 0
        var num1 = Number(true);   // 1
    // 如果是数字值,则进行简单的传入和返回
        var num2 = Number(5);   // 5
    // 如果是null值,则返回 0
        var num3 = Number(null);    //0
    // 如果是undefined,则返回NaN
        var num4 = Number(undefined);   // NaN
    // 如果是字符串,情况分为多类:
        let stringNumber = '123';   // 只包含数字,转换为十进制数值,忽视前导的0
        let stringFloat = '1.35';       //  只包含有效的浮点数,转换为对应的浮点数值,忽略前导的0
        let stringXF = '0xf';            // 有效的十六进制,转换为对应的十进制整数值
        let stringEmpty = '';           // 空字符串,转换为0
        let stringOther = 'dd23';   // 其他格式,转换为NaN
    // 如果是对象,调用对象的 valueOf() 方法,再根据规则转换,如果结果为NaN,则调用对象的 toString() 方法,再根据规则转换
    
    parseInt() 转换规则:
    // 数字开头的任意字符串,默认将前面可识别部分转为整数
    var num1 = parseInt('1234abcd5678');   // 1234
    var num2 = parseInt('') // NaN
    var num3= parseInt('22.5') // 22
    // 识别整数格式:十进制、八进制、十六进制
    var num4 = parseInt('10') // 10
    var num5 = parseInt('010') // 8
    var num6 = parseInt('0x10') // 16
    // 在ES3 引擎中,‘070’被当作八进制字面量,解析为十进制的56;在ES5引擎中,会忽略前导‘0’,解析为70
    // 由此,parseInt 会提供第二个参数,指定解析的值为多少进制,并且可以不带整数格式的前缀;
    var num4 = parseInt('10', 10) // 10
    var num5 = parseInt('10',8) // 8
    var num6 = parseInt('10',16) // 16
    
    parseFloat() 转换规则:
    // 数字开头的任意字符串,可以解析小数点,默认忽略前导0;
    var num1 = parseFloat('.1234') // 0.1234
    var num2 = parseFloat('012.34') // 12.34
    // 只解析十进制,无法解析十六进制和八进制等,也没有第二个参数;
     var num3 = parseFloat('0x10') // 0
    var num4 = parseFloat('010') // 10
    

    6. String 类型

    表示由 零 或 多个16位Unicode字符组成的字符序列,即字符串。可以由单引号(")或者双引号(')表示。

    字面量 含义
    \n 换行
    \t 制表
    \b 空格
    \r 回车
    \f 进纸
    \\ 斜杠
    \' 单引号,例如:'Hello, it\'s me'
    \" 双引号,例如:"\"你好,是我\""
    • 转换为字符串
    toString() 方法:
    // 数值、布尔值、对象和字符串值,直接返回字符串副本,null和undefined没有该方法;
    let val1 = 10, // '10'
    let val2 = true, //'true'
    let val3 = {}, // '[object object]'
    let val4 = 'Hello', // 'Hello'
    val.toString();
    // 通常,toString() 方法不用传参。如果在数值调用时,可以传基数,则输出有效进制的字符串值,传入基数不正确时报错
    var num = 10;
    num.toString(); //10
    num.toString(2) //1010
    num.toString(8) //12
    
    String() 方法:
    // 如果值有该方法,返回相应字符串;
    // 如果是null,则返回 'null';
    // 如果是undefined,则返回'undefined';
    

    7. Object 类型

    定义:ECMAScript 中的对象其实就是一组数据和功能的集合。
    Obejct 类型具有的任何属性和方法同样存在于实例当中;

    属性 方法
    constructor 保存着用于创建当前对象的函数
    hasOwnProperty(propertyName) 用于检查给定的属性在当前对象实例中是否存在(不是在实例的原型中)
    isPrototypeOf(object) 用于检查传入的对象是否是传入对象的原型
    propertyIsEnumerable(propertyName) 用于检查给定的属性是否能够使用for-in语句来枚举。
    toLocaleString() 返回对象的字符串表示,与执行环境的地区对应
    toString() 返回对象的字符串表示
    valueOf() 返回对象的字符串、数值或布尔值表示。通常与toString()方法的返回值相同

    相关文章

      网友评论

          本文标题:JavaScript - 数据类型

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