zoukankan      html  css  js  c++  java
  • 原始值

    不可变的原始值和可变的对象引用:

      原始值是不可以改变的,字符串中所有的办法看上去返回了一个修改后的字符串,实际上返回的是一个新的字符串。

    var s = "hello"
    s.toUpperCae();          //=>""HELLO"
    s            //=>"hello"  原始字符串的值并未改变

      对象的比较并非值的比较:即使对象包含两个同样的属性及相同的值,它们也是不相等的。各个元素完全相等的两个数组也不相等。

    var o = {x:1};
    var p = {x:1};
    o === p       //false:两个单独的对象永不相等
    var a = [];
    var b = [];
    a === b       //false:两个单独的数组永不相等   

      对象的比较均是引用的比较:当且仅当它们引用同一个基对象时,它们才相等。

    var a = [];         
    var b = a;
    b[0] = 1;
    a[0]
    a === b        //=>true:a和b引用同一个数组,因此它们相等。

    类型转换:

      1.转换成字串

    var sColor = "blue";
    alert(sColor.length);//outputs "4"
    var sColor = "blue";
    alert(sColor.length);//outputs "4" 

      总而言之,3种主要的原始值Boolean值、数字和字串都有toString()方法。ECMAScript定义的所有对象都有toString()方法,无论它是伪对象,还是真的对象。 Boolean型的toString()方法只是输出"true"或"false",结果由变量的值决定:

    var bFound = false;
    alert(bFound.toString());//outputs "false"
    var bFound = false;
    alert(bFound.toString());//outputs "false" 

      Number类型的toString()方法比较特殊,它有两种模式,即默认模式和基模式,采用默认模式,toString()方法只是用相应的字符串输出数字值(无论是整数、浮点数还是科学记数法)。

    var iNum1 = 10;
    var fNum2 = 10.0;
    alert(iNum1.toString()); //outputs "10"
    alert(fNum2.toString()); //outputs "10"
    var iNum1 = 10;
    var fNum2 = 10.0;
    alert(iNum1.toString()); //outputs "10"
    alert(fNum2.toString()); //outputs "10" 

      采用Number类型的toString()方法的基模式,可以用不同的基(进制基数)输出数字。

    var iNum = 10;
    alert(iNum.toString(2)); //outputs "1010"
    alert(iNum.toString(8)); //outputs "12"
    alert(iNum.toString(16)); //outputs "A"
    var iNum = 10;
    alert(iNum.toString(2)); //outputs "1010"
    alert(iNum.toString(8)); //outputs "12"
    alert(iNum.toString(16)); //outputs "A" 

      2.转换成数字

      ECMAScript提供了两种把非数字的原始值转换成数字的方法,即parseInt()和parseFloat()。 注意:只有对String类型(Number除外)调用这些方法,才能正确运行对其他类型返回的都是NaN。

    var iNum1 = parseInt("1234blue");//returns 1234
    var iNum2 = parseInt("oxA"); //returns 10
    var iNum3 = parseInt("22.5"); //returns 22
    var iNum4 = parseInt("blue"); //returns NaN
    var iNum1 = parseInt("1234blue");//returns 1234
    var iNum2 = parseInt("oxA"); //returns 10
    var iNum3 = parseInt("22.5"); //returns 22
    var iNum4 = parseInt("blue"); //returns NaN 

      parseInt()方法还有基模式,可以把二进制、八进制、十六进制或者其他任何进制的字符串转换成十进制整数。第二个参数指定按哪一种进制来解析。

    var iNum1 = parseInt("AF",16);// returns 175
    var iNum2 = parseInt("10",2); // returns 2
    var iNum3 = parseInt("10",8); //returns 8
    var iNum4 = parseInt("10",10); //returns 10
    var iNum1 = parseInt("AF",16);// returns 175
    var iNum2 = parseInt("10",2); // returns 2
    var iNum3 = parseInt("10",8); //returns 8
    var iNum4 = parseInt("10",10); //returns 10 

      3.强制类型转换

      ECMAScript中可用的3种强制类型转换如下:
      (1).Boolean(value)
      把给定的值转换成Boolean型。
      当要转换的值是至少有一个字符的字符串、非0数字或对象时,Boolean()函数将返回true。如果该值是空字符串、数字0、undefined或null,它将返回false。

    var b1 = Boolean(""); // false;
    var b2 = Boolean("hi");//true
    var b3 = Boolean(100);//true
    var b4 = Boolean(null);//false
    var b5 = Boolean(0);//false
    var b6 = Boolean(new Object());//true
    var b1 = Boolean(""); // false;
    var b2 = Boolean("hi");//true
    var b3 = Boolean(100);//true
    var b4 = Boolean(null);//false
    var b5 = Boolean(0);//false
    var b6 = Boolean(new Object());//true 

      (2).Number(value)
      把给定的值转换成数字(可以是整数或浮点数)。
      还记得parseInt()和parseFloat()方法只转换第一个无效字符之前的字符串,因此"4.5.6"将被转换为"4.5"。用 Number()进行强制类型转换,"4.5.6"将返回NaN,因为整个字符串值不能转换成数字。如果字符串能被完整地转换,Number()将判断是调用parseInt()方法还是调用parseFloat()方法。

    Number(false);//0
    Number(true);//1
    Number(undefined);//NaN
    Number(null);//0
    Number("5.5");//5.5
    Number("56");//56
    Number("5.6.7");//NaN
    Number(new Object());//NaN
    Number(100);//100
    Number(false);//0
    Number(true);//1
    Number(undefined);//NaN
    Number(null);//0
    Number("5.5");//5.5
    Number("56");//56
    Number("5.6.7");//NaN
    Number(new Object());//NaN
    Number(100);//100 

      (3).String(value)
      把给定的值转换成字串。
      与调用toString()方法的唯一不同之处在于,对null或undefined值强制类型转换可以生成字符串而不引发错误

    var s1 = String(null);//"null"
    var oNull = null;
    var s2 = oNull.toString();//causes an error 
  • 相关阅读:
    021.day21 反射 Class类 反射常用操作
    020.day20 线程概述 多线程优缺点 线程的创建 线程常用方法 生命周期 多线程同步
    019.day19 缓冲流 对象流 标准输入输出流
    018.day18 map集合如何实现排序 File类 IO流 字节流 字符流 编码
    017.day17 Map接口 克隆 treeSet集合排重缺陷
    016.day16 HashSet TreeSet 比较器Comparable Comparator
    015.day15
    014.day14
    013.day13
    线程
  • 原文地址:https://www.cnblogs.com/QianBoy/p/7586574.html
Copyright © 2011-2022 走看看