JavaScript高级程序设计(第2版)笔记 数据类型

 

    基本数据类型(Undefined,Null,Boolean,Number,String)和复杂数据类型(Object,本质上由一组无序的名值组成),ECMAScript数据类型具有动态性,不需要再定义其他类型。
    
    typeof操作符,返回字符串:undefined(如果这个值未定义),boolean,string,number,object(如果这个值是null或者对象),function(如果这个值是函数)
 
    Undefined类型
        只有一个值,undefined
    Null类型
        只有一个值,null,如果定义的变量准备在将来用于保存对象,那么最好将它初值赋值为null
        alert(null == undefined); //true
 
    Boolean类型
        两个值,true false
        转换 Boolean()  ture: 任何非空字符,任何非零数值,任何对象
                                flase:空字符穿"",0和NaN,null,undefined
 
    Number类型
        三类:整数,浮点数,NaN(表明不是一个数,也是Number类型)
        整数:八进制表示(前置0),十六进制表示(前置0x)
        浮点数:
                alert(0.1+0.2==0.3);//false ,IEEE754数值精度问题
                Number.MAX_VALUE这个值巨大,1.79e+308
                alert(Number.MAX_VALUE*Number.MAX_VALUE);溢出时,转化为特殊的Infinity值
        NaN:
                定义:除0得到该结果或者目标值不是数值
                alert(NaN == NaN);//false 
                isNaN()函数:true:NaN,10,"10"(可以被转化为10),true(可以被转化为1)
                                      false:"blue"
                                      适用于对象,先调用对象的valueof()方法,如果不能再调用toString()方法,在基于上述规则判断。
        数值转换:Number(),parseInt(),parseInt(,),parseFloat()
        Number()规则:
            true 1,false 0
            null 0
            undefined NaN
            字符串:空 0,只含数字 转换成十进制数(前导0将忽略,不会被当做8进制),十六进制字符 转换成同等大小的十进制数值,有效的浮点数 转化成对应的浮点数(前导0忽略),其他 NaN
        parseInt()规则:更多的是看是否符合数值模式,总体思想,忽略前面的空格(Number()不会忽略哦),以第一个非空字符开始,到第一个不是数字的字符结束。
            
parseInt("    1234blue");//1234
            parseInt("    -3264My");//-3264
            parseInt("");//NaN
            parseInt("0xA");//10
            parseInt("22.5");//22
            parseInt("070");//56 (8进制)
 
            Number("    1234blue");//NaN
            Number("    -3264My");//NaN
            Number("");//0
            Number("oxA");//10
            Number("22.5");//22.5
            Number("070");//70(不支持8进制)

 

 
           parseInt("14",5);//9,按5进制解析
        parseFloat()规则,与parseInt()思想一致
                paresFloat("    1234blue");//1234(整数,他的确返回的是整数)
                parseFloat("0xA");//0 只解析十进制的数  
 
 
    String类型 
        不可变,一旦创建不可改变,若变就重新建新的字符串实例。
            var strChange = "a"; //创建a
            strChange = strChange + "b"; //创建b,创建新的实例填充ab,销毁a和b
        数值的toString()方法,Num.toString(n),用n进制显示,n默认是10
 
    Object类型 对象是一组数据和功能的集合
        对象可以通过执行 new 操作符后跟要创建的对象类型名称来创建
        也可以创建Object类型的实例,再为其添加属性和方法,创建自定义对象。
   
      
 function Person(strName,intAge)
       {
            this.name = strName;
            this.age = intAge;
            this.sayHello = function(){alert(this.name + "hello");};
       }
       var person = new Person("Jam",10);
 
       var obj = new Object();
       obj.name = "Lily";
       obj.age = "9";
       obj.sayHello = function(){alert(this.name + "hello");};

 

 
       
        
        
posted @ 2012-08-05 23:37  acjialiren  阅读(222)  评论(0编辑  收藏  举报