zoukankan      html  css  js  c++  java
  • javaScript 数据类型

    一、Number类型
    整数:
        a、十进制
            var num=510;
        b、八进制字面值第一位必须是0
            var num1=070;//八进制的56
            var num2 =079;//无效的八进制—解析为79
            var num3 =08;// 无效的八进制—解析为8 (超过当做十进制数解析)
        c、十六进制前面则必须是0x,后跟十六进制数字(0~F),不分大小写
            var num1 = 0xA;
            var num2 = 0x1f;
        注意:虽然可以表示为八进制和十六进制,但是计算时会被转换成十进制值。
    
    浮点数:
        var num1 = 1.1;
        var num2 =0.1;
        var num3 = .1;//有效,但不推荐
        注意:在保存整数时内存分配大小只有浮点数的1/2,所以当浮点数可以转换为整数时,javascript会自动转换为整数。
             0.1+0.2不等于0.3,而是0.3000000000000004,所以在做判断时,千万不要用浮点数相加判断等于预想中的某个值。
    
    科学计数法计数:
        var num=123.456e10;
        注意:最小值-->Number.MIN_VALUE 最大值-->Number.MAX_VALUE不在范围自动转换成Infinity值,如果是负数,就是-Infinity,整数就是Infinity。Infinity的意思是无穷,也就是正负无穷,跟数学中的概念是一样的。但是Infinity是无法参与计算的。可以用原生函数确定是不是有穷:isFinite();只有位于数值范围内才会返回true。
    
    常用函数:
        isNaN()函数的转换规则如下:
        在Javascript中NaN用于表示一个本来要返回数值的操作数未返回数值的情况。
        NaN(非数值 Not a Number)的特点:
        1、任何涉及NaN的操作(如:NaN/0)都会返回NaN.
        2、NaN与任何值都不相等,包括NaN本身
    
      Number()函数的转换规则如下:
          ● 如果是Boolean值,true和false将分别被替换为1和0
          ● 如果是数字值,只是简单的传入和返回
          ● 如果是null值,返回0
          ● 如果是undefined,返回NaN
          ● 如果是字符串,遵循下列规则:
           ○ 如果字符串中只包含数字,则将其转换为十进制数值,即”1“会变成1,”123“会变成123,而”011“会变成11(前导的0被忽略)
           ○ 如果字符串中包含有效的浮点格式,如”1.1“,则将其转换为对应的浮点数(同样,也会忽略前导0)
           ○ 如果字符串中包含有效的十六进制格式,例如”0xf“,则将其转换为相同大小的十进制整数值
           ○ 如果字符串是空的,则将其转换为0
           ○ 如果字符串中包含除了上述格式之外的字符,则将其转换为NaN
          ● 如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果是NaN,则调用对象的toString()方法,然后再依次按照前面的规则转换返回的字符串值。
            var num1 = Number("Hello World");    //NaN
            var num2 = Number("");                //0
            var num3 = Number("000011");        //11
            var num4 = Number(true);            //1
          由于Number()函数在转换字符串时比较复杂而且不够合理,因此在处理整数的时候更常用的是parseInt()函数。
    
        parseInt()函数的转换规则如下:
            函数在转换字符串时,更多的是看其是否符合数值模式。它会忽略字符串前面的空格,直至找到第一个非空格字符。如果第一个字符串不是数字字符或者负号,parseInt()会返回NaN;也就是说,用parseInt()转换空字符串会返回NaN。如果第一个字符是数字字符,praseInt()会继续解析第二个字符,知道解析完所有后续字符或者遇到了一个非数字字符。例如,"1234blue"会被转换为1234,”22.5“会被转换为22,因为小数点并不是有效的数字字符。
          如果字符串中的第一个字符是数字字符,parseInt()也能够识别出各种整数格式(即十进制、八进制、十六进制)。
            var num1 = parseInt("1234blue");    //1234
            var num2 = parseInt("");            //NaN
            var num3 = parseInt("0xA");            //10(十六进制)
            var num4 = parseInt("22.5");        //22
            var num5 = parseInt("070");            //56(八进制)
            var num6 = parseInt("70");            //70
            var num7 = parseInt("10",2);        //2(按二进制解析)
            var num8 = parseInt("10",8);        //8(按八进制解析)
            var num9 = parseInt("10",10);        //10(按十进制解析)
            var num10 = parseInt("10",16);        //16(按十六进制解析)
            var num11 = parseInt("AF");            //56(八进制)
            var num12 = parseInt("AF",16);        //175
    
            parseFloat()函数的转换规则如下:
          与parseInt()函数类似,parseFloat()也是从第一个字符(位置0)开始解析每个字符。而且也是一直解析到字符串末尾,或者解析到遇见一个无效的浮点数字字符为止。也就是说,字符串中的第一个小数点是有效的,而第二个小数点就是无效的了,因此它后面的字符串将被忽略。例如,”22.34.5“将会被转换成22.34。
          parseFloat()和parseInt()的第二个区别在于它始终都会忽略前导的零。由于parseFloat()值解析十进制值,因此它没有用第二个参数指定基数的用法。
            var num1 = parseFloat("1234blue");    //1234
            var num2 = parseFloat("0xA");        //0
            var num3 = parseFloat("22.5");        //22.5
            var num4 = parseFloat("22.34.5");    //22.34
            var num5 = parseFloat("0908.5");    //908.5
    
    
    二、Boolean类型
         这个类型只有两个值:true 和false。虽然只有两个值,但是javascript中所有类型的值都有与这两个值等价的值。要将一个值转换为对应的Boolean值,可以调用转型函数Boolean() 
        其实在 if 语句判断中,会对里面的条件自动执行Boolean变化的。
    
    
    三、String类型
        var str1 = "Hello";
        var str2 = 'Hello';
      alert(str1.length);        //输出5
        
        toString()方法:
          要把一个值转换为一个字符串有两种方式。第一种是使用几乎每个值都有的toString()方法。
            var age = 11;
            var ageAsString = age.toString();    //字符串"11"
            var found = true;
            var foundAsString = found.toString();    //字符串"true"
          数值、布尔值、对象和字符串值都有toString()方法。但null和undefined值没有这个方法。
          多数情况下,调用toString()方法不必传递参数。但是,在调用数值的toString()方法时,可以传递一个参数:输出数值的基数。
            var num = 10;
            alert(num.toString());      //"10"
            alert(num.toString(2));     //"1010"
            alert(num.toString(8));     //"12"
            alert(num.toString(10));    //"10"
            alert(num.toString(16));    //"a"
    
        String()方法:    
          在不知道要转换的值是不是null或undefined的情况下,还可以使用转型函数String(),这个函数能够将任何类型的值转换为字符串。String() 函数遵循下列转换规则:
          ● 如果值有toString()方法,则调用该方法(没有参数)并返回相应的结果
          ● 如果值是null,则返回"null"
          ● 如果值是undefined,则返回”undefined“
            var value1 = 10;
            var value2 = true;
            var value3 = null;
            var value4;
            alert(String(value1));    //"10"
            alert(String(value2));    //"true"
            alert(String(value3));    //"null"
            alert(String(value4));    //"undefined"
    
    
    四、undefined类型
        如果声明变量却没有初始化,则当前变量的值就是undefined。在较老的浏览器对象并没有undefined这个属性,所以如果使用到undefined的操作将会导致失常,故采用这样的方式,不过一开始看会有点难理解,在旧版本的浏览器中会因为没有window.undefined这个对象而返回一个undefined值,所以这样做可以兼容旧浏览器。
        不过包含undefined值的变量与未定义的变量是不一样的,如:
        var name;
        alert(name);//undefined
        alert(age);// 错误:age is not defined
        还没声明过的变量只能执行一项操作,其他全都不能做,就是使用typeof操作符检测其数据类型。
        如果不管声明过未初始化以及未声明过的变量执行typeof都是返回undefined的值。两种变来那个都不能执行真正的操作
    
        typeof()方法:
          由于Javascript中的变量是松散类型的,所以它提供了一种检测当前变量的数据类型的方法,也就是typeof关键字,在上面提到的ECMAScript中的5种简单数据类型中,(记住,这5种只是数据类型,代表一种数据类型,就想C#中的int,string类型一样),通过typeof关键字,对这5种数据类型会返回下面的值(以字符串形式显示
            “undefined”    ----------   如果值未定义                       Undefined
            “boolean”      ----------     如果这个值是布尔值              Boolean
            “string”        ----------     如果这个值是字符串              String
            “number”      ----------     如果这个值是数值类型           Number
            “object”        ----------     如果这个值是对象或null        Object
            “function”       ----------     如果这个值是函数                 Function
    
    
    五、Null类型
        Null类型是第二个只有一个值的数据类型,这个特殊的值是null。从逻辑角度来看,null值表示一个空对象指针,而这也正是使用typeof操作符检测null时会返回"object"的原因,例如:
        var car = null;
        alert(typeof car); // "object"
      如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null而不是其他值。这样一来,只要直接检测null值就可以知道相应的变量是否已经保存了一个对象的引用了,例如:
        if(car != null)
        {
            //对car对象执行某些操作
        }
      实际上,undefined值是派生自null值的,因此ECMA-262规定对它们的相等性测试要返回true。
      alert(undefined == null); //true
      尽管null和undefined有这样的关系,但它们的用途完全不同。无论在什么情况下都没有必要把一个变量的值显式地设置为undefined,可是同样的规则对null却不适用。换句话说,只要意在保存对象的变量还没有真正保存对象,就应该明确地让该变量保存null值。这样做不仅可以体现null作为空对象指针的惯例,而且也有助于进一步区分null和undefined。
    
    
    六、Object类型
        例子1:
            对象由花括号分隔。在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义。属性由逗号分隔:
            var person={firstname:"Bill", lastname:"Gates", id:5566};
            上面例子中的对象 (person) 有三个属性:firstname、lastname 以及 id。
            空格和折行无关紧要。声明可横跨多行:
            var person={
            firstname : "Bill",
            lastname  : "Gates",
            id        :  5566
            };
            对象属性有两种寻址方式:
            name=person.lastname;
            name=person["lastname"];
    
        例子2:    
            Object类型是Javascript引用类型的鼻祖了,(就跟在C#和Java中是一样的道理),在创建Object类型的实例后可以为其添加属性和方法,
            var o = new Object;//有效,不推荐
            var o =new Object();
    
        说明:    
         在Javascript中,Object类型所具有的任何属性和方法也同样存在于更具体的对象中。每个实例都有如下的属性和方法,如下:
        1、constructor ,保存着用于创建当前对象的函数。上面构造函数就是Object();
        2、hasOwnProperty,用于检查给定的属性是否在当前对象实例中,是就true,不是在实例中,而是在原型中,则是false;
        3、isPrototypeOf,用于检查传入的对象是否是另一个对象的原型
        4、propertyIsEnumerable,用于检查给定的属性是否能够使用for…in语句来枚举,
        5、toString,返回对象的字符串表示
        6、valueOf,返回对象的字符串、数值或布尔值表示,通常与toString方法返回值相同
        以上就是Object所具有的属性和方法,所有对象都会因为继承关系而继承这些属性和方法。
    
    七、数组
        下面的代码创建名为 cars 的数组:
        var cars=new Array();
        cars[0]="Audi";
        cars[1]="BMW";
        cars[2]="Volvo";
        或者 (condensed array):
        var cars=new Array("Audi","BMW","Volvo");
        或者 (literal array):
        实例
        var cars=["Audi","BMW","Volvo"];
            
  • 相关阅读:
    Hibernate: Encountered a duplicated sql alias [] during auto-discovery of a native-sq
    “Uncaught TypeError: string is not a function”
    Jquery Ajax 返回数据类型变成document
    浏览器URL编码
    SQL Server 多条查询结果组合
    (转)No row with the given identifier exists问题的解决
    观nginx与lvs负载均衡的较量
    Nginx启动、关闭、重新加载脚本
    数据挖掘-分词入门
    HBase 专题技术收录
  • 原文地址:https://www.cnblogs.com/sprinng/p/6603685.html
Copyright © 2011-2022 走看看