JavaScript中数据类型的转化

1.为什么要进行数据类型的转化?

在 JavaScript 程序中 , 变量中存储的数据类型没有限制,也就是说在变量中可以存储任何符合JavaScript语法规范的数据类型。但是 在 JavaScript 程序的执行过程中,往往需要变量中存储的数值是某种特定的数据类型,此时就需要进行数据类型的转化。
JavaScript中数据类型的转化,分为自动转化和强制转化。

2.自动转化

自动转化是计算机程序自动完成的转化,只有在特定情况下才会执行。

  1. 自动转化为布尔类型?
    在 执行 if 判断时 ,其他数据类型会自动转化为布尔类型。
    转化原则:
    (1) 0 、空字符串、 undefined 、 null 、 NaN 这五种情况转化为false
 if(''){
            console.log( '转化为true' );
        }else{
            console.log( '转化为false' );
        }

空字符串转化为false

(2)其他的所有 都会转化为 true

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

字符串0转化为true
2. 自动转化为字符串类型?
在执行字符串拼接 时, 会将其他数据类型转化为字符串类型。
转化原则:
(1)布尔值 true —> 字符串 ‘true’
布尔值 false —> 字符串 ‘fasle’

var a = '布尔值' + true;
       console.log(a);

布尔值true转化为字符串'true'
(2)undefined —> 字符串 ‘undefined’
null —> 字符串 ‘null’

var a = '数值' + null;
       console.log(a);

数值null转化为字符串'null'
(3)数值 —> 将数值解析转化为 对应的 纯数字的字符串

 var a= '数字' + 2e3;  
       console.log(a);

科学计数法也会解析为数字
(4)数组 —> 将 [] 中的内容,转化为字符串的形式,进行拼接

var a = '数组' + [1,2,3,4,5] ; 
        console.log(a);

数组转化为字符串时去掉[]
(5)对象 —> 任何对象,任何内容,都会转化为 [object Object] 固定的内容形式

 var a = '对象' + {name:'小明' , age:20 , sex:'女'} ;
        console.log(a);

对象的转化
(6)函数 —> 将所有的程序代码,转化为字符串

  var a = '函数' + function fun(){console.log(123)};
        console.log(a);

函数转化为字符串

  1. 自动转化为数值类型?
    在执行数学运算时会触发数据类型的自动转化
    转化原则:
    (1)布尔类型 : true —> 1
    false —> 0
var a = 10 - true;
        console.log(a);

true转化为1
(2)undefined : 转化为 NaN

 var a= 10 - undefined;
        console.log(a);

所有NaN参与的运算结果都是NaN
undefined : 转化为 NaN
(3)null : 转化为 0

var a = 10 - null;
        console.log(a);

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

var a = 10 - '123abc'; 
        console.log(a);

有不符合数字规范的内容
(5)数组、对象、函数
如果是加号:执行的是字符串拼接效果,按照这些数据类型转化为字符串的原则来转化
如果是其他形式的运算 执行结果都是 NaN

3.强制转化

强制转化是程序员强行完成的转化

  1. 强制转化为布尔类型?
    转化原则与自动转化原则相同。
    (1) 0 、空字符串、 undefined 、 null 、 NaN 这五种情况转化为false
    (2)其他的所有 都会转化为 true
  2. 强制转化为字符串类型?
    方法1 变量.toString(进制类型)
    将数值强制转化为字符串,并且可以设定转化的进制
    注意: .toString() 之前,不能直接写数值,必须是写成变量的形式
var a = 100;
        console.log(a.toString(2));

字符串类型在控制台输出的字体颜色是黑色
输出的二进制数值是字符串类型
方法2 String( 变量 / 数据 )
将变量或者数据,转化为字符串,原则是按照自动转化的原则来执行,不会改变变量中存储的原始数值。

 var a = 5;
            console.log( String(a) );
            console.log( a );

在这里插入图片描述
3. 强制转化为数值类型?
方法1 Number(变量/数值)
将其他类型强制转化为数值类型,转化原则与自动转化选择相同

console.log( Number( [1,2,3,4,5] ) ); 

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

console.log( parseInt(true) );                                             
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')} ) ); 

结果都是NaN
在这里插入图片描述
(2)数组执行,是获取没有 []的部分,获取第一个数值的整数部分,如果有就获取,如果没有,结果是NaN;

console.log( parseInt( [1,2,3,4,5] ) );  // 结果是 1 
   console.log( parseInt( [null,2,3,4,5] ) );     // 结果是 NaN 

(3)如果是整数就直接获取,如果是浮点数,或者科学计数法,就获取整数部分
(4)字符串

 console.log( parseInt( '100' ) );   // 与数字的结果相同 是100
console.log( parseInt( '3abc' ) );   // 结果是3

方法3 parseFloat( 变量 / 数值 )
表示:获取浮点数部分
(1)

console.log( parseFloat(true) );                                               
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')} ) );       

结果都是NaN
在这里插入图片描述
(2)数值 : 整数,浮点数,都会完整获取

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

(3)字符串:从字符串的左侧起解析符合浮点数的部分

console.log( parseFloat( '100' ) );         // 与数字的结果相同  是100
console.log( parseFloat( '0.0123' ) );      // 与数字的结果相同  是0.0123
console.log( parseFloat( '3.123123e3' ) );  // 科学计数法会解析  是3123.123
console.log( parseFloat( '3.1111abc' ) );    //3.1111  
console.log( parseFloat( '1.123' ) );  //1.123  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值