js基础(三)数据类型转换

在js的使用中,常常会遇到 数据类型的转换。下面来描述一下数据类型之间转换的规则。函数

1、Boolean类型的转换测试

数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 空字符串('')
Number 任何非零数字(包换无穷大) 0和NaN
Object 任何对象 null
Undefined   undefined

2、Number类型spa

1.Number 对象属性(部分)code

//Number 对象属性(部分)
			alert(Number.MIN_VALUE);//最小值
			alert(Number.MAX_VALUE);//最大值
			alert(Number.POSITIVE_INFINITY);//Infinity(正无穷)
			alert(Number.NEGATIVE_INFINITY);//-Infinity(负无穷)
				//NaN
				//说明:能够经过 Number.NaN获得NaN值,任何与NaN进行运算的结果均为NaN,NaN与自身不相等,且不与任何值相等。
				alert(Number.NaN);//NaN
				alert(NaN+1);//NaN
				alert(NaN==NaN);//false

2.Number 判断 (部分)对象

//Number 判断 (部分)
			//isFinite()函数  若是没有超出返回 true,若是已经超出返回   false
			var num=10;
			alert(isFinite(num));//true
			alert(isFinite(100e10000));//false
			//isNaN()函数    在接收到一个值的时候,会尝试转换为数值,若是不能转换为数值,返回true,能转换则返回false
			alert(isNaN(NaN));//true
			alert(isNaN(25));//false
			alert(isNaN('25'));//false
			alert(isNaN('12lee'));//true //说明他的转换可能 用的是Number()强制转换
			alert(isNaN(true));//false
			
			//isNaN()也能够适用于对象,在调用时,会先调用ValueOf()方法,而后肯定返回值是否能转换成数值,若是 不能,则基于这个返回值再调用toString()方法,再测试返回值
			/*var num2={
				na:function(){
					//return '123';
					return 123
				}
			};
			//alert(isNaN(num2));//true//这个由于没有调用因此返回true
			alert(isNaN(num2.na()))//false*/
			var num3={
				toString:function(){
					return '123';
				}
			};
			alert(isNaN(num3));//false
			//说明:toString是一个比较特殊的属性,在这里会直接调用toString()方法,因此和第一个例子不同

3.Number  类型转换 ci

有三种方法:Number()、parseInt()、parseFloat()字符串

(1)Number()string

//Number()函数是转型函数 ,能够用于任何数据类型的转换,可是不精确
			alert(Number(true));//1  Boolean类型: true为1 false为0
			alert(Number(25));//25   Number类型:原值输出 
			alert(Number(null));// 0  Null类型:返回0
			alert(Number(undefined));//NaN  Undefined类型:返回NaN
			alert(Number('123l'));//NaN   string类型只要有一个非数字,无论在前仍是在后,都会返回NaN;若是是全是数字字符串则会按照十进制来转换,前导(第一位)为0,则去掉0;浮点小数为直接转成浮点小数,这两点和下面的parseInt()和parseFloat()不同!!!
			alert(Number(num3));// 123  Object类型:会调用valueOf()方法,而后肯定返回值是否可以转换为数值,若是转换的结果 是NaN,则基于这个结果再调用toString()方法,再测试返回值

(2)parseInt()it

//parseInt()整型转型函数 主要是针对字符串的转换
			//若是字符串中第一位是数字 ,则会返回这个数字直到碰到非数字中止;若是第一位就是非数字,则返回 NaN;若是为空,则返回 NaN
			alert(parseInt(''));//NaN 空返回NaN   和Number()函数不一样,该函数返回0
			//parseInt(string, radix)有两个参数,第一个为字符串,第二个是进制(2,8,10,16)
			
			
			//说一个比较 特殊的,若是字符串前导为0,则后面要加进制,不然会默认为8进制,例以下;
			alert(parseInt('070'));//70
			alert(parseInt('070',8));//56
			
			var iNum1 = parseInt("010");	//返回 8
			var iNum2 = parseInt("010", 8);	//返回 8
			var iNum3 = parseInt("010", 10);	//返回 10
			alert(iNum1+','+iNum2+','+iNum3);//10,8,10
			
			//这是从w3c上看到的,多是兼容性问题吧,在谷歌中,默认都是十进制;在IE中,会输出 8,8,10  因此为了兼容性,前导为0的后面要加上进制

(3)parseFloat()io

//parseFloat()用于浮点数值转换。从第一位解析到非浮点数值的位置,但只认一个小数点,且不认16进制
			alert(parseFloat('123c'));//123 遇到非数字中止,开始若是非数字 则返回 NaN
			alert(parseFloat('0XA'));//0    不认识16进制
			alert(parseInt('0xA'));//10
			alert(parseFloat('123.4.5'));//123.4  //只认一位小数点
			alert(parseFloat('0123.4000.1'));//123.4  //去掉先后导
			alert(parseFloat('1.234e7'));//12340000  //把科学计数法转成普通 数值
			alert(parseInt('1.234e7'));//1  //遵循自身的规则 遇到非数字中止

3、String类型

//String类型   toString()方法、String()方法
			
			//字符串类型在转换时,有两个比较 特殊 的注意一下:null和undefined
			var str1=null;
			var str2=undefined;
			alert(typeof str1);//object
			alert(typeof str2);//undefined
			alert(String(str1));//null
			alert(typeof String(str1));//string
			//alert(str1.toString());//报错了呀  Cannot read property 'toString' of null
			//alert(toString(str1));//[object Undefined];对象未定义
			//alert(str2.toString());//Cannot read property 'toString' of undefined
			//alert(toString(str2));//[object Undefined];对象未定义
			//以上说明:纯粹的Null类型和Undefined类型是没有toString()方法的。但若是值有toString()方法,则调用该方法并返回相应的结果 ,若是 是null或者undefined,则返回“null”或者"undefined"。不过这个目前我也不太清楚,试试对象吧
			var box1={
				toString:function(){
					return null;
				}
			}
			alert(box1);//null