数据类型的转化

数据类型的转化

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

一.数据类型的自动转化

自动转化是计算机程序,自动完成的转化。
注:自动转化不是任何时候都会发生的,只有特殊情况,才会发生。

(一)其他数据类型,自动转化为布尔类型

在执行if 判断时,其他数据类型会自动转化为布尔类型
其他类型转化为布尔类型的原则:
0 ‘’ undefined null NaN 这五种情况转化为false
其他所有都会转化为 true

        if(true){
	    	console.log('对') 
	    }else{
	    	console.log('错') 
	    }
	    
	    if(false){
	    	console.log('对') 
	    }else{
	    	console.log('错') 
	    }
		
		/*
		  这里的 if() 里, 只接受你输入 true 和 false 两个数值 
		  当你输入的不是这两个值时 if 程序会自动的将你输入的其他数据
		  转化 为 true 或者 false 
		*/
		if(0){  // 0 转化为 false 输出 错
			console.log('对') //转化为true输出 对
		}else{
			console.log('错') //转化为false输出 错
		}
		
		if(''){  // '' 空字符串 转化为 false 输出 错
			console.log('对') 
		}else{
			console.log('错') 
		}
		
		if(undefined){  // undefined 转化为 false 输出 错
			console.log('对') 
		}else{
			console.log('错') 
		}
		
		if(null){ // null 转化为 false 输出 错
			console.log('对') 
		}else{
			console.log('错') 
		}
		
		if(NaN){  // NaN 转化为 false 输出 错
			console.log('对') 
		}else{
			console.log('错') 
		}
		
		// 其他的 转化为 true 输出 对
		// 如字符串 转化为 true 输出 对
		if('我'){
			console.log('对') 
		}else{
			console.log('错') 
		}
		
(二)其他数据类型,自动转化为字符串类型

在执行字符串拼接时,会将其他数据类型转化为字符串类型。
执行字符串拼接时, 拼接符号+ 两侧应该都是字符串类型,如果是其他类型,在JavaScript程序中会自动转化为字符串类型,再执行拼接。
其他类型转化为字符串类型的原则:
布尔值 true : 转化为 字符串 ‘true’
布尔值 false : 转化为 字符串 ‘false’
undefined : 转化为 字符串 ‘undefined’
null : 转化为 字符串 ‘null’
数值 : 转化为 带 ’ ’ 的数字 字符串
数组 : 去掉 [] 将数组的数据内容转化为字符串
对象 :都会转化为 字符串→[object Object]
函数 :将所有的程序代码,转化为字符串

        console.log('北京' + true);
		// 布尔值 true 转化字符串 'true'
		
		console.log('北京' + false);
		// 布尔值 false 转化字符串 'false'
		
		console.log('北京' + undefined);
		//  undefined 转化字符串 'undefined'
		
		console.log('北京' + null);
		//  null 转化字符串 'null'
		
		console.log('北京' + 100);
		// 数值 转化 数值的字符串
		
		console.log('北京' + 2e3);
		// 科学技术法,会解析为表示的数值,然后再拼接
		
		/* 数组 */
		console.log('北京' + [1,2,3,4,5]);
		// 数组 去掉 [] 将数组的数据内容转化为字符串,执行拼接操作
		
		/* 对象 */
		console.log('北京' + {name:'张三' , age:18 , sex:'男'});
		// 对象 都会转化为 字符串[object Object] , 执行拼接操作
		
		/* 函数 */
		console.log('北京' + function fun(){console.log(123)});
		// 函数 将所有函数的代码转化为字符串,执行拼接操作

下图为运行结果
在这里插入图片描述

(三)其他数据类型,自动转化为数值类型

在执行数学运算时 会触发数据类型的自动转化
这里说的运算指 除+ 以外的运算,
因为 +的运算比较特殊,
两侧都是数值,执行加法运算,
有一个是字符串,就执行字符串拼接操作。
其他类型转化为数值类型的原则:
布尔值 true : 转化为 1
布尔值 false : 转化为 0
undefined : 转化为 NaN
null :转化为 0
字符串 :
(1)如果整个字符串是纯数字字符串转化为对应的数值继续运算 科学计数法也是
(2)如果字符串内有不符合数字规范的内容转化为NaN
数组 对象 函数 :都转化为 NaN

        console.log(100 - true); // true 转化为 1
		console.log(100 - false); // false 转化为 0
		console.log(100 - undefined); // undefined 转化为 NaN
		/* 有NaN参与的运算 输出结果就为NaN*/
		console.log(100 - null); // null 转化为 0
		
		/*字符串类型*/
		console.log(100 - '100');
		console.log(100 - '55.55');
		console.log(100 - '2e1');
		/*
		如果整个字符串是纯数字字符串转化为对应的数值继续运算 
		科学计数法也是
		*/
		console.log(100 - '22a');
		/* 如果字符串内有不符合数字规范的内容转化为NaN */
		
		/* 数组 对象 函数 */
		console.log(100 - [1,2,3,4,5]);
		console.log(100 - {name:'张三' , age:18 , sex:'男'});
		console.log(100 - function fun(){console.log(123)});

下图为运行结果
在这里插入图片描述

二.数据类型的强制转化

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

(一)其他数据类型,强制转化为布尔类型

利用 Boolean() 来实现, 转化原则与自动转化相同
如:

console.log(Boolean(NaN));
console.log(Boolean(null));
console.log(Boolean(0));
console.log(Boolean(100));

结果为
在这里插入图片描述
注:使用 Boolean() 方法 转化 变量中存储的数值,但是不会改变变量中存储的数值,只是将变量中的数值,解析获取,再转化输出,不会改变变量中存储的内容

(二)其他数据类型,强制转化为字符串类型
  1. 利用 变量.toString(进制类型)
    将数值强制转化为字符串,并且可以设定转化的进制
    .toString() 之前,不能直接写数值,必须是写成变量的形式括号里填进制
    如: 定义一个 int = 88 进行以下运行
        var int = 88;
		
		console.log(int.toString(2));
		// 将将数值 88 转化为 2进制的字符串形式 输出
		
		console.log(int.toString(4));
		// 将将数值 88 转化为 4进制的字符串形式 输出
		
		console.log(int.toString(8));
		// 将将数值 88 转化为 8进制的字符串形式 输出
		
		console.log(int.toString(10));
		// 将将数值 88 转化为 10进制的字符串形式 输出
		
		console.log(int.toString(16));
		// 将将数值 88 转化为 16进制的字符串形式 输出

结果为
在这里插入图片描述
2. 利用 String( 变量 / 数据 )
将变量或者数据,转化为字符串,转化原则与自动转化相同
注:不会改变变量中存储的原始数值

console.log(String(true));
console.log(String(null));
console.log(String(NaN));
console.log(String(100));

在这里插入图片描述

(三)其他数据类型,强制转化为数值类型
  1. 利用 Number(变量/数值)
    将其他类型强制转化为数值类型,转化原则与自动转化选择相同
console.log( Number(true) );
console.log( Number(null) );
console.log( Number(undefined) );
console.log( Number('100') );
console.log( Number([1,2,3,4,5]));
console.log( Number( {name:'张三' , age:18 , sex:'男'} ) );
console.log( Number( function fun(){console.log(123)} ) );

结果为
在这里插入图片描述

  1. 利用 parseInt(变量 / 数据)
    是获取变量或者数据的整数部分
    从数据的 左侧起 解析获取 整数部分
    布尔类型 null undefined 对象 函数 都是 NaN
    整数是直接获取 浮点数是获取整数部分 科学计数法是解析之后,获取整数部分
console.log( parseInt( 100 ) ); 
// 整数是直接获取
		
console.log( parseInt( 0.0123 ) );
// 浮点数是获取整数部分
		
console.log( parseInt( 3.123456e3 ) );   
// 科学计数法是解析之后,获取整数部分
		
console.log( parseInt(true) );
console.log( parseInt(null) );
console.log( parseInt(undefined) );
console.log( parseInt( {name:'张三' , age:18 , sex:'男'} ) );
console.log( parseInt( function fun(){console.log(123)} ) );

在这里插入图片描述
数组 :

// 数组执行,是获取 数值部分 也就是 没有 []的部分
// 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' ) ); 
// 科学技术法,从左侧开始,找整数部分,第一个是3,第二个是点,点不是整数,因此整数部分就是3
		
console.log( parseInt( '3abc' ) );
// 含非数字的,从左侧开始,找整数部分,第一个是3,第二个是a,a不是整数,因此整数部分就是3

在这里插入图片描述

  1. 利用 parseFloat( 变量 / 数值 )
    获取浮点数部分
    布尔类型 null undefined 对象 函数 都是 NaN
    整数是直接获取 浮点数是直接获取 科学计数法是解析之后获
console.log( parseFloat( 100 ) ); 
// 整数是直接获取
			
console.log( parseFloat( 0.0123 ) );
// 浮点数是直接获取
		
console.log( parseFloat( 3.123456e3 ) );   
// 科学计数法是解析之后直接获取

console.log( parseFloat(true) );
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( '0.0123' ) );
//如果是纯数字的字符串 与数字的结果相同 
		
console.log( parseFloat( '3.123456e3' ) );
// 科学技术法会解析 与数字的结果相同
		
console.log( parseFloat( '3.1234abc' ) );
// 含非数字的,从左侧开始,找到非数字停止

在这里插入图片描述
关于数据类型的转化就说完了,这些都是在逆战班里学到的,欢迎大家也一起来学习。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

(눈ωಡ)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值