JavaScript:基本(原始)数据类型一 :Null、Undefined、Boolean、Number

405 阅读3分钟

JavaScript:基本(原始)数据类型一 :Null、Undefined、Boolean、Number

  • 在JavaScript中目前有6种基本数据类型:Boolean、String、Number、null、undefind、Symbol

null、undefined是JS中比较特殊的数据类型只有一个值、也是JS中最简单的数据类型。

  • undefined 表示没有定义(初始化)任何的值
    • 当使用var或let 声明变量没有初始化的时候 就相当于给变量赋予了undfined
  • null 是一个空指针的对象 这也是typeof null 会返回 “Object” 的原因
    • 在定义将要保存的变量是对象值时,建议使用unll 来初始化
    • undefined 值是由null值派生而来,它们定义为表明上相等
        console.log(null == undefined) // true
        console.log(null === undefined) // false
    

布尔(boolean)拥有两个值true 和 false

  • 可以用Boolean() 将任何值转化为布尔值
  • false: +0, -0, null, undefined,NaN, 空字符串("")
  • true : 除了以上初始值为false,其他都是true,包括空对象、空数组、字符串"false" 、非零数值(包括正负无穷)

Number、Bigint

JS中的数字类型使用IEEE754的64位浮点类型:最大的安全整数 2的53次方 - 1

  • 使用:
    new Number(value);
    var a = new Number('123'); // a === 123 is false
    var b = Number('123'); // b === 123 is true
    a instanceof Number; // is true
    b instanceof Number; // is false
  • 浮点值

    • 小数点前面不是必须用整数,但推荐加上
    let floatNum1 = 1.1
    let floatNum2 = 0.1
    let floatNum3 = .1  //  有效单不推荐
    let floatNum4 = 1.  // 忽略小数点
    let floatNum5 = 10.0 // 处理为整数
    
    • 浮点数精确度最高为17为小数 但算数计算中远不如整数精确

    之所以存在这种舍入错误是因为使用了IEEE754数值,这种错误非JS独有

    // 0.1+0.2 不等于0.3
    0.1+0.2=0.300 000 000 000 000 04
    
  • 值得范围

    • 最小值:Number.MIN_VALUE 多数浏览器中是5e-324 - Infinity
    • 最大值:Number.MAX_VALUE 超出这个范围 转换为 Infinity
    • 检测是否在最大与最小值之间 使用 isFinite()
  • NaN

    • 任何涉及NaN的操作始终返回NaN
    • NaN不等于包含NaN在内的任何值 可以是用isNaN函数判断一个数值是否为NaN
    console.log(0/0)  // NaN
    console.log(-0/+0) // NaN
    console.log(5/0) // Infinity
    console.log(5/-0) // - Infinity
    
  • 数值的转换

    • 数值类型转换有三个方法:Number()、parseInt()、parseFloat()
    • Number() 执行转换规则
      • 布尔值 true -> 1 ; false -> 0
      • 数值 直接返回
      • null, 返回 0
      • undefined -> NaN
      • 字符串:
        • 包含数值(包括带加、减号)转换为十进制数值 忽略前面0
        • 包含有效浮点数 转换为相应的整数、小数点不是有效数值
        • 包含十六进制格式 如"0xf" 转换为十六进制整数
        • 空字符串 返回0
        • 其他情况返回 NaN
      • 对象,先调用valueOf() 然后按上述规则转换,如果返回NaN 会继续调用toString() 按转换字符串规则转换
    • parseInt() 更专注于字符串是否包含数值模式
      • 忽略前面空格,从第一个非空字符开始:不是数值(数值可以包含加减号) 返回NaN
      • 空字符串返回NaN
      • 如果第一个字符是数值(数值可以包含加减号)则依次匹配,返回直到遇到非数值字符
      • 可以传入第二个参数指定底数(进制数)
      parseInt("  1234blue") // 返回 1234
      parseInt("22.5") // 返回 22 小数点不是有效数值
      parseInt("")  // NaN
      parseInt("0xA") // 10 解释为十六进制
      parseInt("AF", 16) // 十六进制 175
      parseInt("AF") // NaN
      parseInt("10", 2) //按二进制解析
      
    • parseFloat() 与parseInt() 类似 但只解析十进制
        parseFloat("0.43Bul") // 返回 0.43
        parseFloat("22.34.5") // 返回 22.34
    

参考