javascript中6种基本数据类型详解

时间:2023-03-08 23:21:10
javascript中6种基本数据类型详解
  1. javascript中有5中数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和String,还有一种复杂数据类型——object,object本质是由一组键值对组成的。

  2. typeof操作符:用于检测给定变量的数据类型,对一个值试用typeof操作符可能返回下列某个字符串: ♦ “undefined”——表示值未定义; ♦ “boolean”——表示值是布尔值 ;♦ “string”——表示值是字符; ♦ “number”——表示值是数值;  ♦ “object”——表示值是对象或null;♦“function”——表示值是函数;

  3. Undefined类型:Undefined类型只有一个值即undefined。对未初始化和未声明的变量执行typeof操作符都会返回undefined,这就说明当我们对一个变量执行typeof操作符时我们不能立即确定这个变量是未初始化还是未声明,因此显示的初始化变量依然是明智的选择,但不应该初始化为undefined。

  4. Null类型:Null类型是第二个只有一个值的数据类型即null。null值表示一个空指针对象,因此typeof操作符检测null值时返回“object”。如果定义的变量将来用于保存对象那么最好将该变量初始化为null而非其他值,这样只要检查null值就可以知道相应的变量是否已经保存了一个对象的引用。

    无论在什么情况下都没有必要把一个变量的值初始化为undefined,但对于意在保存对象的变量则应明确的初始化为null值。这样做不仅体现null作为空对象指针的惯例,而且也有助于进一步区分null和undefined。

  5. Boolean类型:Boolean类型有两个字面值:true和false。true不一定等于1,false不一定等于0。需要注意的是true和false是区分大小写的,也就是说True和False(以及其他的混合大小写形式)都不是Boolean值,只是标识符。在javascript中所有类型的值都有与这两个Boolean值等价的值,要讲一个值转换为布尔值可以调用转型函数Boolean()。

    //这些转换规则对理解流控制语句(如if语句)自动执行响应的Boolean转换很重要
    var message="hello";
    if(message){
    alert("value is true");
    }
  6. 数据类型 转换为true的值 转换为false的值
    Boolean true false
    String 任何非空字符串 “”(空字符串)
    Number 任何非0数字 0和NaN
    Object 任何对象 null
    Undefined 不适用   undefined
  7. Number类型:

    //浮点数值
    var num1=1.1;
    var num2=0.1;
    var num3=.2; //有效,但不推荐

    由于保存浮点数值需要的空间是保存整数值的2倍因此javascript会不失时机 的将浮点数值转换为整数数值。

    var num4=1.; //小数点后没有数字——解析为1
    var num5=10.0;//整数——解析为10

    对于极大或极小的数值可以用e表示法,e表示法表示的数值等于e前面的数值乘以10的指数次幂,大小写e均可。

    var num0=3.125E7;  //3.125*10的7次方,等于31250000
    var num5=3e-7; //3*10的负7次方,0.0000003
    //浮点数值计算会产生舍入误差问题,这是使用基于IEEE754数值的浮点计算的通病,永远不要测试某个特定的浮点数值。
    var a=0.1;
    var b=0.2;
    alert(a+b); //0.30000000000000004,特例

    2.数值范围:javascript能够表示的最小数值保存在Number.MIN_VALUE中,最大值保存在Number.MAX_VALUE中。如果某次计算的结果超出了javascript的数值范围则这个数值将被自动转换成特殊的Infinity值(负数则转换为-Infinity(负无穷),整数则转换为Infinity(正无穷))。正或负的Infinity值无法参与下一次的计算。使用isFinite()函数可以判断数值是否在最小值与最大值之间。

    var result=Number.MAX_VALUE+0.1;
    alert(isFinite(result)); //false,超出了最大值
    console.log(Number.NEGATIVE_INFINITY); //-infinity
    console.log(Number.POSITIVE_INFINITY); //infinity

    3.NaN:即非数值(Not a Number)。任何涉及NaN的操作都会返回NaN,NaN与任何值都不相等。javascript定义了isNaN(),该函数接受一个参数,该参数可以是任何类型,函数在接收到一个参数后会尝试将这个参数转换为数值然后再判断是否不是数值,注意判断结果,不是数值返回true,是数值返回false。

    //对isNaN()函数进行个人习惯封装
    function isNum(number){
    if(!isNaN(number)){
    return true;
    }
    else{
    return false;
    }
    }

    4.数值转换:

    var num1=Number(true); //
    var num2=Number(1.0); //
    var num3=Number(""); //
    var num4;
    Number(num4); //undefined
    var num5=Number(null); //
    var num6=Number("00123abc"); //NaN
    var num7=Number(""); //123,前导0被忽略
    var num1=parseInt("1a2s3f"); //
    var num2=parseInt("fda123"); //NaN
    var num3=parseInt(""); //NaN
    var num4=parseInt("22.5"); //22
    var num5=parseInt(070); //56(八进制数),前导0不会被忽略
    //parseFloat()与parseInt()有2个区别,1.parseFloat()第一个小数点有效;2.parseFloat()始终会忽略前导0。
    var num1=parseFloat("012.32.gsa"); //12.32
  8. String类型:数值、布尔值、对象、字符串值都有toString()方法,但null和undefined值没有。在不知道要转换的值是不是null或undefined的情况下,可以使用转型函数String(),这个函数能将任何类型的值转换为字符串,String()函数遵循下列转换规则:
    /*
    * 如果值有toString()方法,则调用该方法并返回结果
    * 如果值是null,则返回“null”
    * 如果值是undefined,则返回“undefined”
    */
    alert(String(10)); //"10"
    alert(String(true)); //"true"
    alert(String(null)); //"null"
    var test;
    alert(String(test)); //"undefined"
  9. Object类型:在javascript中Object类型是所有其他实例的基础。需要注意的是宿主对象(BOM和DOM对象)可能会也可能不会继承Object。