• 数据类型转换


    1.强制转换    
        1.1  Number()
            (1)原始类型值
                    Number(234 ).      //234. 数值转换后i还是原来的值
                    Number(‘234' ).      //234。字符串如果可以被解析为数值,则转换后为相对应的值
                    Number( ‘234abd' ).      //NaN字符串如果不可以被解析为数值,则转换后为NaN
                    Number( '' ).      //0。 空字符串直接解析为0
                    Number(false ) &   Number(true ).       //0 & 1       布尔值串true 转为1 false转为0
                    Number( undefined ).      //NaN  undefined转换为NaN
                    Number(null)      //0 null直接转为0,Number函数将字符串转为数值,要比parseInt函数严格很多。基本上,只要有一个字符无法转成数值,整个字符串就会被转为NaN。parseInt逐个解析字符,而Number函数整体转换字符串的类型,parseInt和Number函数都会自动过滤一个字符串前导和后缀的空格
                例如:parentInt(’42 abc’)        //42      
                      Number(’42 abc’)        //NaN 
    
            (2)对象
                    Number({a:1}).      //NaN 
                    Number([1,2])             //NaN
                    Number([1])          //1   只有单个数值的数组转换才不是NaN
    
      1.2  String()
              (1)原始类型值  
                      String(234 )       //’234‘ 数值转换后为相应的字符串
                      String(‘234' ).      //‘234’。字符串转换后还是相对应的值
                      String(false &String(true ).       //‘false' & ’true'   布尔值串true 转为‘true’ false转为’false'
                      String( undefined ).      //‘undefined’   undefined转换为’undefined'
                      String(null)      //’null' null直接转为’null
    
                (2)对象
                        String({a:1}).      //‘[object,object]’                        如果是对象,则返回类型字符串
                        String([1,2,3])          //‘1,2,3’                                   如果是数组,则返回该数组的字符串形式
    
      1.3  Boolean()
                Boolean函数可以将任意类型的值转为布尔值  
                   注意:除了以下五个值的转换结果为false,其他的值全部为true。
                      Boolean(undefined)  //false  undefined     
                      Boolean(null)  //false        null    
                      Boolean(0)  //false         -0 或者+0 
                      Boolean(NaN)  //false      NaN    
                      Boolean('')  //false    空字符串
    
     2.自动转换
        遇到 下边三种情况,javaScript会强制转换
            123 +’abc’.    //‘123abc’对不同类型的数据相互运算时
            If(’abc’){
                Console.info(‘hello’)      //‘hello’ 对非布尔值类型的数据请求布尔值
            }    
           + {f00:’bar’} 或  -[1,2,3]    //NaN 对非数据类型的值使用一元运算符(即+ 或 - )
    
        自动转换的规则是:这里预期是什么类型的值,就调用该类型的转换函数,但是如果该位置即可以是字符串,也可能是数值,那么默认转为数值。由于自动转换具有不确定性,而且不易除错,建议在预期为布尔值、数值、字符串的地方,全部使用Boolean、Number和String函数进行显式转换。 
    
        2.1自动转换为布尔值
                 遇到预期为布尔值的地方(比如if语句的条件部分),就会将非布尔值的参数自动转换为布尔值  
    
        2.2自动转换为字符串
                字符串的自动转换,主要发生在字符串的加法运算时。当一个值为字符串,另一个值为非字符串,则后者转为字符串
    
        2.3自动转换为数值
              遇到预期为数值的地方就会将参数值自动转换为数值。除了加法运算符(+)有可能把运算子转为字
              符串,其他运算符都会把运算子自动转成数值
    3.隐式转换 涉及隐式转换最多的是+ 和 == 其中 +运算符即可数字相加,也可以字符串相加。所以转换时很麻烦。== 不同于===,故也存在隐式转换。- * / 这些运算符只会针对number类型,故转换的结果只能是转换成number类型 数字和字符串如果使用+运算符进行操作,那么会将数字先转换为字符串,然后进行字符串连接操作: var antzone = "antzone”; var num = 8; console.log(antzone+num);//antzone8 如果有布尔型参与,那么首先会将布尔值转换为对应的数字或者字符串,然后再进行相应的字符串连接或者算数运算 var bool = true; var num = 10; console.log(bool + num);//11 先将true转换为数字1,然后再进行算数加运算。 var bool = true; var str='123’; console.log(bool + str);//true123。 true转换为字符串‘true’,然后再进行字符串连接运算。   console.log(undefined+1);//NaN //和数字进行计算,undefined会转化成NaN console.log(null+1);//0 //和数字进行计算,null会转化为0 如果一个操作数为string、boolean、null、undefined,则在后台调用Number()函数,将其转换成数值,再进行操作。 var bool = true; var num = "8”;      console.log(bool - num);//-7
  • 相关阅读:
    开源的excel读取库libxls在windows下的编译,且支持中文,全网首发
    UTF8与GBK、GB2312等其他字符编码的相互转换
    深入理解Netty框架
    论一道编程面试题解法
    JVM调优总结-Xms -Xmx -Xmn -Xss
    Linux上安装jdk1.8和配置环境变量
    .NET GC垃圾回收器
    T4 模板
    Vue 环境搭建
    Spring Cloud 入门系列(一)
  • 原文地址:https://www.cnblogs.com/restart77/p/12337073.html
走看看 - 开发者的网上家园