Javascript中数据类型的转换

Javascript中数据类型的转换(逆战班)

什么是数据类型的转化,为什么要有数据类型的转化

     在 JavaScript 程序中 , 变量中存储的数据类型没有限制
     也就是在变量中可以存储任何符合JavaScript语法规范的数据类型

     但是 在 JavaScript 程序的执行过程中,往往需要变量中存储的数值是某种特定的数据类型,别的数据类型不行,此时就需要进行数据类型的转化

     所谓的数据类型转化,就是将当前数据类型转化为其他数据类型

     JavaScript中数据类型的转化,分为自动转化和强制转化

     自动转化是计算机程序,自动完成的转化、自动转化原则至关重要,必须通过多练

习,掌握
强制转化是程序员,强行完成的转化

一. 布尔类型的自动转化

  其他数据类型,自动转化为布尔类型
    // 在 执行 if 判断时 ,其他数据类型会自动转化为布尔类型
    // 其他类型转化为布尔类型的原则

    // 转化为 false :  0   ''   undefined   null  NaN  这五种情况转化为false
    //                特别提醒 0.0  0.00000  都算是0 

    // 其他的所有 都会转化为 true

        // 这里不是表示对错,是如果 0 要是 按照 布尔类型类执行转化 ,转化的结果是 false

  
    
    // 0 转化为 false
    // 如果 0 转化为 true  执行 if{}   输出的应该是是 字符串 转化为true
    // 如果 0 转化为 false 执行 else{} 输出的应该是是 字符串 转化为false
    
    // if 的 () 里, 只 接受你 输入 true 和 false 两个数值
    // 如果 你在 if 的 ( ) 中 输入了 不是 true 或者 false 的内容
    // if 程序 会自动的将你输入的其他数据 会变成 / 转化 为 true 或者 false 
    // 其中 0  ''空字符串 undefined null  NaN 会变成 false
    // if () 中 写什么都行 反正if 最终都会 给变成 true 或者 false 
    // true 就是 执行 if{}     false 就执行 else{} 

Dome1:

    // if(0){
    //     console.log( '转化为true' );
    // }else{
    //     console.log( '转化为false' );
    // }

    // '' 空字符串 转化为 false
    // if(''){
    //     console.log( '转化为true' );
    // }else{
    //     console.log( '转化为false' );
    // }

    // undefined 空字符串 转化为 false

    // if(undefined){
    //     console.log( '转化为true' );
    // }else{
    //     console.log( '转化为false' );
    // }

    // null 空字符串 转化为 false

    // if(null){
    //     console.log( '转化为true' );
    // }else{
    //     console.log( '转化为false' );
    // }

    // NaN 空字符串 转化为 false

    // if(NaN){
    //     console.log( '转化为true' );
    // }else{
    //     console.log( '转化为false' );
    // }

    // 其他所有数据内容,都会转化为true
    
    // 字符串空格
    if(' '){
        console.log( '转化为true' );
    }else{
        console.log( '转化为false' );
    }

    // 字符串0
    if('0'){
        console.log( '转化为true' );
    }else{
        console.log( '转化为false' );
    }

    // 字符串0.0
    if('0.0'){
        console.log( '转化为true' );
    }else{
        console.log( '转化为false' );
    }
    // 自己可以写几个感兴趣的数值,来体会效果

二. 字符串的自动转化

    其他类型自动转化为字符串
      // 在 执行 字符串拼接 时, 会将其他数据类型转化为字符串类型

      // 执行字符串拼接, 拼接符号 +号 两侧 应该都是 字符串类型
      // 如果是其他类型 JavaScript程序,会自动转化为 字符串类型,再执行拼接
        var str1 = '北京' + '上海';

      // 转化原则
      // 布尔值 true  ---> 字符串 'true'
      // 布尔值 false ---> 字符串 'fasle'
      // undefined ---> 字符串 'undefined'
      // unll ---> 字符串 'null'
      // 数值 ---> 将数值解析转化为 对应的 纯数字的字符串

      // 这里有三个特殊的转化,先记住结果,之后会详细说

      // 数组 ---> 将 [] 中的内容,转化为字符串的形式,进行拼接
      // 对象 ---> 任何对象,任何内容,都会转化为 [object Object] 固定的内容形式
      // 函数 ---> 将所有的程序代码,转化为字符串

三,数值的自动转换

  其他类型自动转化为数值
   //在执行数学运算时 会触发数据类型的自动转化
   
  转化原则:
      // 布尔类型 : true  --->  1
      //               false --->  0

      //undefined : 转化为 NaN 
      // null : 转化为 0
    
      // 字符串 : 
      //   如果整个字符串,是纯数字字符串,或者符合科学计数法 ---> 转化为对应的数值
      //   如果字符串内有不符合数字规范的内容 ---> 转化为 NaN 

      //   数组,对象,函数
      //   如果是 + 加号 执行的是字符串拼接效果 
      //              按照这些数据类型转化为字符串的原则来转化
      //   如果是 其他形式的运算 执行结果都是 NaN

四.布尔类型的强制转化

 其他数据类型,强制转化为布尔类型
    // 就是使用JavaScript中定义好的 方法/函数
    // Boolean( 数据/变量 )
    // 转化原则与自动转化原则相同
    // false : 0   ''   undefined  null  NaN
    // true  : 其他数据,都转化为true

    // Boolean() 这个方法 不会改变 变量中存储的原始数值
    
    var int = 100;
    // 将 int 中存储的数值100 ,转化为布尔值输出,转化结果是 true
    console.log( Boolean(int) );
    // 使用 Boolean() 方法 转化 变量中存储的数值,但是不会改变变量中存储的数值
    // 只是将变量中的数值,解析获取,再转化输出,不会改变变量中存储的内容
       console.log( int );

五.字符串类型的强制转化

  其他类型强制转化为字符串类型
    // 方法1 变量.toString(进制类型)
    // 将数值强制转化为字符串,并且可以设定转化的进制
    // .toString() 之前,不能直接写数值,必须是写成变量的形式
    // 进制常用的数值是 2 8 16 
    // 可以设定的范围是 2 - 36 进制  10个数值+26个英文字母
    // 最少是2进制,最多是36进制

    // var int = 100;
    // 将int 中存储的 100 数值,按照二进制转化,并且以字符串的形式来输出
    // 如果输出时, 第一个数值1 之前的 0 , 会不输出 , 对数值大小没有影响
    // console.log(int.toString(2));
    // 八进制
    // console.log(int.toString(8));
    // 十六进制
    // console.log(int.toString(16));
    // ()中没有输入,默认执行十进制
    // console.log(int.toString());

    // 进制范围是2-36
    // console.log(int.toString(9));

    // 2, String( 变量 / 数据 )
    // 将变量或者数据,转化为字符串
    // 原则按照自动转化的原则来执行
    // 不会改变变量中存储的原始数值

    var int = 2e5;

    console.log( String(int) );
    console.log( int );
    
    // 字符串拼接时,会将其他数据类型自动转化为字符串

六.数字的强制转化

  将其他数据类型强制转化为 数值类型
    // 方法1 , Number(变量/数值) 
    // 将其他类型强制转化为数值类型,转化原则与自动转化选择相同
    /*
    console.log( Number(true) );   // 1
    console.log( Number(false) );  // 0
    console.log( Number(null) );   // 0

    console.log( Number(undefined) );   // NaN

    console.log( Number('100') );       // 对应的数值
    console.log( Number('100.123') );   // 对应的数值
    console.log( Number('2e4') );       // 对应的数值

    console.log( Number('123abc') );    // NaN

    console.log( Number( [1,2,3,4,5] ) );                           // NaN
    console.log( Number( {name:'zhangsan'} ) );                     // NaN
    console.log( Number( function fun(){console.log('abc')} ) );    // NaN
    */

    // 方法2, parseInt(变量 / 数据) 
    // 是获取变量或者数据的整数部分
    // 从数据的 左侧起 解析获取 整数内容 

    // console.log( parseInt(true) );                                    // 都是 NaN            
    // console.log( parseInt(false) );                                   
    // console.log( parseInt(null) );                                    
    // console.log( parseInt(undefined) );                               
    // console.log( parseInt( {name:'zhangsan'} ) );                     
    // console.log( parseInt( function fun(){console.log('abc')} ) ); 
    
    // 数组执行,是获取 数值部分 也就是 没有 []的部分
    // 1,2,3,4,5  整数部分是 1  1之后是逗号 逗号不是整数,之后的部分也就不算整数
    // 获取第一个数值的整数部分,如果有就获取,如果没有,结果是NaN
    // console.log( parseInt( [1,2,3,4,5] ) );        // 结果是 1                      
    // console.log( parseInt( [null,2,3,4,5] ) );     // 结果是 NaN 
    
    // 如果是整数就直接获取,如果是浮点数,或者科学计数法,就获取整数部分
    // console.log( parseInt( 100 ) );          // 整数是直接获取
    // console.log( parseInt( 0.0123 ) );       // 浮点数是获取整数部分
    // console.log( parseInt( 3.123456e3 ) );   // 科学计数法是解析之后,获取整数部分

    // 字符串不同了
    // 如果是纯数字的字符串
    // console.log( parseInt( '100' ) );         // 与数字的结果相同 
    // console.log( parseInt( '0.0123' ) );      // 与数字的结果相同 
    
    // console.log( parseInt( '3.123456e3' ) ); 
    // console.log( parseInt( '3abc' ) );  
    // console.log( parseInt( '3.123' ) );  

    // 现在是一个字符串,从左侧开始,找整数部分,第一个是3,第二个是点,点不是整数,因此整数部分就是3
    

    // 方法3 , parseFloat( 变量 / 数值 )
    // 获取浮点数部分

    // console.log( parseFloat(true) );    // 都是 NaN            
    // console.log( parseFloat(false) );                                   
    // console.log( parseFloat(null) );                                    
    // console.log( parseFloat(undefined) );                               
    // console.log( parseFloat( {name:'zhangsan'} ) );                     
    // console.log( parseFloat( function fun(){console.log('abc')} ) );         

    // 数值 
    // 整数,浮点数,都会完整获取

    console.log( parseFloat(100) );
    console.log( parseFloat(100.1234) );
    console.log( parseFloat(1.234567e3) );

    // 关键是字符串
    // 从字符串的左侧起 解析 符合浮点数的部分

    console.log( parseFloat( '100' ) );         // 与数字的结果相同 
    console.log( parseFloat( '0.0123' ) );      // 与数字的结果相同 
    
    console.log( parseFloat( '3.123456e3' ) );  // 科学技术法会解析
    console.log( parseFloat( '3.1223abc' ) );        
    console.log( parseFloat( '3.123' ) );  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值