您的位置:首页 > Web前端 > JavaScript

JavaScript学习--2. 数据类型(2)

2014-12-20 15:40 197 查看
一、 不可变的原始值和可变的对象引用 
    原始值(undefined, null, 布尔值, 数字, 字符串)
    对象(数组, 函数)

    原始值是不可更改的。原始值的比较是值的比较。 只有在它们的值相等时它们才相等。 
    对象是可变的(它们的值是可修改的), 对象的比较: 即使两个对象包含同样的属性及相同的值。 它们也不是相等的。各个索引元素完全相等的两个数组也不相等, 只有两个对象同时引用同一个基对象时,它们才相等。

二、 类型转换
    原始值到对象的转换。 通过调用String(), Number(), Boolean()构造函数。转换为它们各自的包装对象

    

    null 和 undefined 属于例外。 当将它们用在期望是一个对象的地方都会造成一个类型错误(TypeError)异常。而不会执行正常的转换

    下边例子的值,都为true

    null == undefined 

    "0" == 0; //比较前字符串转换成数字
    0 == false //布尔值转换成数字

    "0" == false //字符串和布尔值都转换成数字

    

    显式类型转换

        Number("3");    //=> 3

        String(false);    // "false"  或使用false.toString()

        Boolean([]);     
  // true

        Object(3);     
      // new Numbers(3);

    除了null, undefined之外的任何值都具有toString()方法

    "+"  一个操作数为字符串。 它将会把另外一个操作数转换成为字符串。

    一元“+”运算符, 将其操作数转换为数字。

    

    Number类定义了toString()方法可以接收表示转換基数的可选参数。 如果不指定此参数。转换规则将是基于十进制。 同样, 亦可以将数字转换为其他进制数。

    toFixed() 根据小数点后的指定位数将数字转换为字符串, 

    toExponential() 使用指数记数法将数字转换为指数形式的字符串, 其中小数点前只有一位, 小数点后面的位数则由参数指定(也就是说有效期

    toPrecision() 根据指定的有效数字位置将数字转换成字符串

    Number()转换一个字符串成数字。 这个方法只能基于十进制进行转变换。 并且不能出现非法的尾随字符。

    parseInt(), parseFloa和()函数更加灵活, parseInt()只解析整数。 parseFloat()可以解析整数和浮点数。

4000
三、 对象转换为原始值
    对象-> 布尔值: 所有对象都转换为true

    对象->字符串&数字:  调用转换对象的一个方法完成
        所有的对象继承了两个转换方法。
    第一个是toString().  作用是返回一个反映这个对象的字符串。
        [1,2,3].toString();      
  //=> "1,2,3"
        (function(x){f(x);}).toString(); //=> "function(x){\n f(x);\n}"
        /\d+/g.toString();     
          // "/\\d+/g"
        new Date(2010,0,1).toString(); 
  //=> "Fri Jan 01 2010 00:00:00 GMT-0800(PST)"
        
    第二个是valueOf().  如果存在任意原始值, 它就默认将对象转换为表示它的原始值。 对象是复合值, 而且大多数对象无法真正表示为一个原始值。 因此默认的valueOf()方法简单地返回对象本身,
而不是返回一个原始值。 

     var d = new Date(2010,0,1); //2010年1月1日
     d.valueOf();        //=> 12623...
  时间戳
    

    对象到字符串的转换经过了如下步骤:

    1 如果对象具有toString()方法 则调用这个方法。 如果它返回一个原始值。 JavaScript将这个值转换为字符串(如果本身不是字符串的话), 并返回这个字符串结果。

    2 如果对象没有toString()方法 或者这个方法并不返回一个原始值 那么JavaScript会调用valueOf()方法,。  如果存在这个方法, 则JavaScript调用它 如果返回值是原始值。JavaScript将这个值转换为字符串(如果本身不是字符串的话),并返回这个字符串结果

    

    

       
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript