《JS权威指南学习总结--3.8类型转换》

JS数据类型转换方法主要有三种:

         转换函数、强制类型转换、利用js变量弱类型转换。

一.转换函数

         parseInt()和parseFloat()两个转换函数。

         前者把值转换成整数,后者把值转换成浮点数。

         只有对String类型调用这些方法,这两个函数才能正确运行;对其他类型返回的都是NaN(Not a Number)。

         parseInt()判断:在判断字符串是否是数字值前,parseInt()和parseFloat()都会仔细分析该字符串。

         parseInt()方法首先查看位置0处的 字符,判断它是否是个有效数字;

         如果不是,该方法将返回NaN,不再继续执行其他操作。

         但如果该字符是有效数字,该方法将查看位置1处的字符,进行同样的 测试。

         这一过程将持续到发现非有效数字的字符为止,此时parseInt()将把该字符之前的字符串转换成数字。

       

         parseInt("1234blue");   //   1234 
         parseInt("0xA");   //   10 
         parseInt("22.5");   //   22 
         parseInt("blue");   //   NaN

        扩展:

        parseInt()方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。

        可以这样调用parseInt()方法: 
          parseInt("10",   2);   //   2 
          parseInt("10",   8);   //   8 
          parseInt("10",   10);   // 10 

       parseFloat()判断:

         从位置0开始查看每个字符,直到找到第一个非有效的字符为止,然后把该字 符之前的字符串转换成数字。

         不过,对于这个方法来说,第一个出现的小数点是有效字符。如果有两个小数点,第二个小数点将被看作无效的, parseFloat()方法会把这个小数点之前的字符串转换成数字。 这意味着字符串 "22.34.5 "将被解析成22.34。 

         使用parseFloat()方法的另一不同之处在于,字符串必须以十进制形式表示浮点数,而不能用八进制形式或十六进制形式。

        该方法会忽略前导0,所以八进制数0908将被解析为908。对于十六进制数0xA,该方法将返回NaN,因为在浮点数中,x不是有效字符。此外,parseFloat()也没有基模式。

         parseFloat()例子  

         parseFloat("1234blue");   //1234.0 
         parseFloat("0xA");   //NaN 
         parseFloat("22.5");   //22.5 
         parseFloat("22.34.5");   //22.34 
         parseFloat("0908");   //908 
         parseFloat("blue");   //NaN

 二.强制类型转换

       Boolean(value)——把给定的值转换成Boolean型; 
       Number(value)——把给定的值转换成数字(可以是整数或浮点数); 
       String(value)——把给定的值转换成字符串。 
       用这三个函数之一转换值,将创建一个新值,存放由原始值直接转换成的值。这会造成意想不到的后果。 
       当要转换的值是至少有一个字符的字符串、非0数字或对象时,Boolean()函数将返回true。如果该值是空字符串、数字0、undefined或null,它将返回false。

       Boolean型的强制类型转换:

        Boolean("");   //false   –   empty   string 
        Boolean("hi");   //true   –   non-empty   string 
        Boolean(100);   //true   –   non-zero   number 
        Boolean(null);   //false   -   null 
        Boolean(0);   //false   -   zero 
        Boolean(new   Object());   //true   –   object

        Number()的强制类型转换

        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  

       String()的强制类型转换

        它可把任何值转换成字符串。要执行这种强制类型转换,只需要调用作为参数传递进来的值的 toString()方法,即把1转换成   "1 ",把true转换成 "true ",把false转换成 "false ",依此类推。

        强制转换成字符串和调用toString()方法的唯一不同之处在于,对null或undefined值强制类型转换可以生成字符串而不引发错误:

        var   s1   =   String(null);   //"null" 
        var   oNull   =   null; 
        var   s2   =   oNull.toString();   //won’t   work,   causes   an   error

三.利用JS弱类型转换

       <script> 
         var   str= '012.345 '; 
         var   x   =   str-0; 
         x   =   x*1;

         alert(x); //12.345

        </script>

原文地址:https://www.cnblogs.com/hanxuming/p/5762967.html