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
相關文章
相關標籤/搜索