javascript中有5中數據類型(也稱為基本數據類型):Undefined、Null、Boolean、Number和String,還有一種複雜數據類型——object,object本質是由一組鍵值對組成的。 typeof操作符:用於檢測給定變數的數據類型,對一個值試用typeof操作符可能返回下 ...
-
javascript中有5中數據類型(也稱為基本數據類型):Undefined、Null、Boolean、Number和String,還有一種複雜數據類型——object,object本質是由一組鍵值對組成的。
-
typeof操作符:用於檢測給定變數的數據類型,對一個值試用typeof操作符可能返回下列某個字元串: ♦ “undefined”——表示值未定義; ♦ “boolean”——表示值是布爾值 ;♦ “string”——表示值是字元; ♦ “number”——表示值是數值; ♦ “object”——表示值是對象或null;♦“function”——表示值是函數;
-
Undefined類型:Undefined類型只有一個值即undefined。對未初始化和未聲明的變數執行typeof操作符都會返回undefined,這就說明當我們對一個變數執行typeof操作符時我們不能立即確定這個變數是未初始化還是未聲明,因此顯示的初始化變數依然是明智的選擇,但不應該初始化為undefined。
- Null類型:Null類型是第二個只有一個值的數據類型即null。null值表示一個空指針對象,因此typeof操作符檢測null值時返回“object”。如果定義的變數將來用於保存對象那麼最好將該變數初始化為null而非其他值,這樣只要檢查null值就可以知道相應的變數是否已經保存了一個對象的引用。
無論在什麼情況下都沒有必要把一個變數的值初始化為undefined,但對於意在保存對象的變數則應明確的初始化為null值。這樣做不僅體現null作為空對象指針的慣例,而且也有助於進一步區分null和undefined。
-
Boolean類型:Boolean類型有兩個字面值:true和false。true不一定等於1,false不一定等於0。需要註意的是true和false是區分大小寫的,也就是說True和False(以及其他的混合大小寫形式)都不是Boolean值,只是標識符。在javascript中所有類型的值都有與這兩個Boolean值等價的值,要講一個值轉換為布爾值可以調用轉型函數Boolean()。
//這些轉換規則對理解流控制語句(如if語句)自動執行響應的Boolean轉換很重要 var message="hello"; if(message){ alert("value is true"); }
-
數據類型 轉換為true的值 轉換為false的值 Boolean true false String 任何非空字元串 “”(空字元串) Number 任何非0數字 0和NaN Object 任何對象 null Undefined 不適用 undefined -
Number類型:
//浮點數值 var num1=1.1; var num2=0.1; var num3=.2; //有效,但不推薦
由於保存浮點數值需要的空間是保存整數值的2倍因此javascript會不失時機 的將浮點數值轉換為整數數值。
var num4=1.; //小數點後沒有數字——解析為1 var num5=10.0;//整數——解析為10
對於極大或極小的數值可以用e表示法,e表示法表示的數值等於e前面的數值乘以10的指數次冪,大小寫e均可。
var num0=3.125E7; //3.125*10的7次方,等於31250000 var num5=3e-7; //3*10的負7次方,0.0000003 //浮點數值計算會產生舍入誤差問題,這是使用基於IEEE754數值的浮點計算的通病,永遠不要測試某個特定的浮點數值。 var a=0.1; var b=0.2; alert(a+b); //0.30000000000000004,特例
2.數值範圍:javascript能夠表示的最小數值保存在Number.MIN_VALUE中,最大值保存在Number.MAX_VALUE中。如果某次計算的結果超出了javascript的數值範圍則這個數值將被自動轉換成特殊的Infinity值(負數則轉換為-Infinity(負無窮),整數則轉換為Infinity(正無窮))。正或負的Infinity值無法參與下一次的計算。使用isFinite()函數可以判斷數值是否在最小值與最大值之間。
var result=Number.MAX_VALUE+0.1; alert(isFinite(result)); //false,超出了最大值
console.log(Number.NEGATIVE_INFINITY); //-infinity
console.log(Number.POSITIVE_INFINITY); //infinity3.NaN:即非數值(Not a Number)。任何涉及NaN的操作都會返回NaN,NaN與任何值都不相等。javascript定義了isNaN(),該函數接受一個參數,該參數可以是任何類型,函數在接收到一個參數後會嘗試將這個參數轉換為數值然後再判斷是否不是數值,註意判斷結果,不是數值返回true,是數值返回false。
//對isNaN()函數進行個人習慣封裝 function isNum(number){ if(!isNaN(number)){ return true; } else{ return false; } }
4.數值轉換:
var num1=Number(true); //1 var num2=Number(1.0); //1 var num3=Number(""); //0 var num4; Number(num4); //undefined var num5=Number(null); //0 var num6=Number("00123abc"); //NaN var num7=Number("00123"); //123,前導0被忽略
var num1=parseInt("1a2s3f"); //1 var num2=parseInt("fda123"); //NaN var num3=parseInt(""); //NaN var num4=parseInt("22.5"); //22
var num5=parseInt("070"); //56(八進位數),前導0不會被忽略//parseFloat()與parseInt()有2個區別,1.parseFloat()第一個小數點有效;2.parseFloat()始終不會忽略前導0。 var num1=parseFloat("012.32.gsa"); //12.32
- String類型:數值、布爾值、對象、字元串值都有toString()方法,但null和undefined值沒有。在不知道要轉換的值是不是null或undefined的情況下,可以使用轉型函數String(),這個函數能將任何類型的值轉換為字元串,String()函數遵循下列轉換規則:
/* * 如果值有toString()方法,則調用該方法並返回結果 * 如果值是null,則返回“null” * 如果值是undefined,則返回“undefined” */ alert(String(10)); //"10" alert(String(true)); //"true" alert(String(null)); //"null" var test; alert(String(test)); //"undefined"
- Object類型:在javascript中Object類型是所有其他實例的基礎。需要註意的是宿主對象(BOM和DOM對象)可能會也可能不會繼承Object。