• 《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>

  • 相关阅读:
    兼容ie6:zindex
    分割网址/链接/url变量
    JS:给select添加option选项
    如果用QQ邮箱订阅一个网站或博客?
    input无边框
    有些标签的innerHTML属性是只读的
    满屏透明层
    文本框光标不居中?
    PHP:json_decode解析JSON数据
    开放平台/API
  • 原文地址:https://www.cnblogs.com/hanxuming/p/5762967.html
Copyright © 2020-2023  润新知