javascript 数据类型转换

JS是一门弱类型语言,弱类型语言在声明时不需要指定数据类型,而且在运算时会根据需要进行类型的变换。

类型转换分为2种:显式转换(强制类型转换)和隐式转换(自动类型转换)。
                1.强制类型转换
                    Number类型转换:
                        parseInt()  强制将其他数据类型转换为整型
                            1.数字开头的字符串被转换成对应的整数
                            2.数字被转换成对应整数数字
                            3.其他的都被转换成NaN

                        parseFloat()  强制将其他数据类型转换为浮点数型
                            1.数字开头的字符串被转换成对应的浮点数
                            2.数字被转换成对应浮点数数字
                            3.其他的都被转换成NaN

                        Number() 强制将其他数据类型转换为数字类型
                            1.string 空字符串被转换为0;纯数字的字符串被转换成对应的数字;其他字符串被转换成NaN
                            2.boolean:true => 1   false => 0
                            3.undefined => NaN;
                            4.function=>NaN; 
                            5.object除了null都是NaN;Null => 0;
                            6.number还是number
                        注意:浮点数运算并非精确运算,浮点数计算存在偏差问题。(计算机使用的是二进制计算,小数点后面的数字计算不够精确)

                    字符串类型转换:强制将其他数据类型转换为字符串类型
                        String()    将其他数据类型转化为字符串类型;

                         返回的所有数据都是以字符串形式表现,不再具有其他类型的意义。

                          该方式对任何数据都有效。

                    布尔值类型转换:强制将其他数据类型转换为布尔值类型
                        Boolean()   将其他数据类型转化为布尔值
                            1.string:空字符串被转换为false;其他字符串被转换成true;
                            2.boolean:true => true   false => false;不用转换
                            3.undefined => false;Null => false
                            4.number:整数、浮点数=>true;NaN、0、0.0=>false 
                            5.function => 都是true
                            6.object除了null都是true;Null => false

2.自动类型转换

自动类型转换多发生在运算和判断的过程当中,且不需要人为干预。转换的时候都是向着更为精确的类型转换

string类型跟任何类型相加都得string类型;

boolean类型和number类型相加都得number类型;

undefined类型跟除了string类型以外的任何类型相加都得NaN.

+加号对字符串有拼接功能,对其他数据类型只有运算功能。

数据类型比较:

NaN 与其他类型比较(包括NaN本身)都为false;

null==undefined //true      

null、undefined 与其他类型比较都为false;

 boolean 与number、string比较,全都先转为Number类型再比较;

number 与boolean、string比较:boolean、string使用Number()方法先转换为number,再和number比较;

object与string比较,object转string再比较;与number、boolean比较,都转为number再比较;

object与object比较,比较两者是不是同一个内存地址。

var str="你好"; //字符串类型

var num = 10; // 数字类型

 console.log(str + num); // 得到的结果为'你好10'
 因为两种不同类型的值不能直接运算,需要先转为相同类型才能运算,此时,数字 10 会先自动转换为 '10',然后再跟 '你好' 拼接

 var flag = false; // 布尔值类型
 console.log(num + flag); // 得到的结果为'10';因为true => 1  false => 0

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>js数据类型转换</title>
	</head>
	<body>
		<script>
			var iNum=12;//整数
			var fNum=12.42;//浮点数
			var num=NaN;//Not a Number,相当于一个提示符,说明运算出错,结果不是一个数字;
			var str="";//空字符串
			var str1="你好";
			var str2="2你好";
			var str3="3.58你好";
			var str4="4.25.24你好";
			var str5="5";
			var str6="6.58";
			var str7="7.25.24";
			var flag=true;//布尔值类型为真
			var Flag=false;//布尔值类型为假
			var nul=null;//空类型(空对象)
			var und=undefined;//未定义类型
			
//			console.log(typeof iNum);//number
//			console.log(typeof fNum);//number
//			console.log(typeof num);//number
//			console.log(typeof str);//string
//			console.log(typeof str1);//string
//			console.log(typeof str2);//string
//			console.log(typeof str3);//string
//			console.log(typeof str4);//string
//			console.log(typeof str5);//string
//			console.log(typeof str6);//string
//			console.log(typeof str7);//string
//			console.log(typeof flag);//boolean
//			console.log(typeof Flag);//boolean
//			console.log(typeof nul);//oblect
//			console.log(typeof und);//undefined
typeof 输出结果以字符串的形式显示number、string、boolean、object、undefined类型

//			console.log(typeof typeof iNum);
//			console.log(typeof typeof fNum);
//			console.log(typeof typeof num);
//			console.log(typeof typeof str);
//			console.log(typeof typeof str1);
//			console.log(typeof typeof str2);
//			console.log(typeof typeof str3);
//			console.log(typeof typeof str4);
//			console.log(typeof typeof str5);
//			console.log(typeof typeof str6);
//			console.log(typeof typeof str7);
//			console.log(typeof typeof flag);
//			console.log(typeof typeof Flag);
//			console.log(typeof typeof nul);
//			console.log(typeof typeof und);
typeof typeof 输出结果均为string

//			console.log(Boolean(iNum));//true
//			console.log(Boolean(fNum));//true
//			console.log(Boolean(num));//false
//			console.log(Boolean(str));//false
//			console.log(Boolean(str1));//true
//			console.log(Boolean(str2));//true
//			console.log(Boolean(str3));//true
//			console.log(Boolean(str4));//true
//			console.log(Boolean(str5));//true
//			console.log(Boolean(str6));//true
//			console.log(Boolean(str7));//true
//			console.log(Boolean(flag));//true
//			console.log(Boolean(Flag));//false
//			console.log(Boolean(nul));//false
//			console.log(Boolean(und));//false
输出结果为蓝色,且均为布尔值类型

//			console.log(String(iNum));//12
//			console.log(String(fNum));//12.42
//			console.log(String(num));//NaN
//			console.log(String(str));//
//			console.log(String(str1));//你好
//			console.log(String(str2));//2你好
//			console.log(String(str3));//3.58你好
//			console.log(String(str4));//4.25.24你好
//			console.log(String(str5));//5
//			console.log(String(str6));//6.58
//			console.log(String(str7));//7.25.24
//			console.log(String(flag));//true
//			console.log(String(Flag));//false
//			console.log(String(nul));//null
//			console.log(String(und));//undefined
输出结果黑色,均为字符串类型

//			console.log(Number(iNum));//12
//			console.log(Number(fNum));//12.42
//			console.log(Number(num));//NaN
//			console.log(Number(str));//0
//			console.log(Number(str1));//NaN
//			console.log(Number(str2));//NaN
//			console.log(Number(str3));//NaN
//			console.log(Number(str4));//NaN
//			console.log(Number(str5));//5
//			console.log(Number(str6));//6.58
//			console.log(Number(str7));//NaN
//			console.log(Number(flag));//1
//			console.log(Number(Flag));//0
//			console.log(Number(nul));//0
//			console.log(Number(und));//NaN
空字符串、布尔值为假时、空对象被转换为0,布尔值为真时被转换为1,纯数字字符串被转换为对应数字,其他被转换为NaN

//			console.log(parseInt(iNum));//12
//			console.log(parseInt(fNum));//12
//			console.log(parseInt(num));//NaN
//			console.log(parseInt(str));//NaN
//			console.log(parseInt(str1));//NaN
//			console.log(parseInt(str2));//2
//			console.log(parseInt(str3));//3
//			console.log(parseInt(str4));//4
//			console.log(parseInt(str5));//5
//			console.log(parseInt(str6));//6
//			console.log(parseInt(str7));//7
//			console.log(parseInt(flag));//NaN
//			console.log(parseInt(Flag));//NaN
//			console.log(parseInt(nul));//NaN
//			console.log(parseInt(und));//NaN
数字开头的字符串被转换成对应的整数;数字被转换成对应整数数字;其他的都被转换成NaN

//			console.log(parseFloat(iNum));//12
//			console.log(parseFloat(fNum));//12.42
//			console.log(parseFloat(num));//NaN
//			console.log(parseFloat(str));//NaN
//			console.log(parseFloat(str1));//NaN
//			console.log(parseFloat(str2));//2
//			console.log(parseFloat(str3));//3.58
//			console.log(parseFloat(str4));//4.25
//			console.log(parseFloat(str5));//5
//			console.log(parseFloat(str6));//6.58
//			console.log(parseFloat(str7));//7.25
//			console.log(parseFloat(flag));//NaN
//			console.log(parseFloat(Flag));//NaN
//			console.log(parseFloat(nul));//NaN
//			console.log(parseFloat(und));//NaN
数字开头的字符串被转换成对应的浮点数;数字被转换成对应浮点数数字;其他的都被转换成NaN

		</script>
	</body>
</html>
<script>
document.write('<h2>数据类型转换结果</h2>');
var myDate=true;
if(typeof myDate==='string'){
	document.write('输入的数据:var myDate=\''+myDate+'\';<br />');
	function myFunc(x){
	document.write('自动转换为整数:parseInt(\''+x+'\')='+parseInt(x)+';<br />');
	document.write('自动转换为浮点数:parseFloat(\''+x+'\')='+parseFloat(x)+';<br />');
	document.write('自动转换为Number类型:Number(\''+x+'\')='+Number(x)+';<br />');
	document.write('自动转换为String类型:String(\''+x+'\')=\''+String(x)+'\';<br />');
	document.write('自动转换为Boolean类型:Boolean(\''+x+'\')='+Boolean(x)+';<br />');
	}
	myFunc(myDate);
}else{
	document.write('输入的数据:var myDate='+myDate+';<br />');
	function myFunc(x){
	document.write('自动转换为整数:parseInt('+x+')='+parseInt(x)+';<br />');
	document.write('自动转换为浮点数:parseFloat('+x+')='+parseFloat(x)+';<br />');
	document.write('自动转换为Number类型:Number('+x+')='+Number(x)+';<br />');
	document.write('自动转换为String类型:String('+x+')=\''+String(x)+'\';<br />');
	document.write('自动转换为Boolean类型:Boolean('+x+')='+Boolean(x)+';<br />');
	}
	myFunc(myDate);
}
</script>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值