在ECMAScript中提供了5種原始類型(Primitive type,Null,Boolean,Number和String)。並提供了typeof運算子來判斷這個值是否在某個類型範圍內。
typeof有一個參數,即它要檢測的變數或值。var temp = "Hello world";
alert(typeof temp); //這裡顯示是"string"
alert(typeof 95); //這裡顯示是"number"
對變數或值使用typeof運算將會返回以下幾種類型:
"#ff0000" 變數為"Undefined"類型
"boolean" 變數為"Boolean"類型
"number" 變數為"Number"類型
"string" 變數為"String"類型
"object" 變數為參考型別或"Null"類型
也就是ECMAScript中提供的5種原始類型
1."Undefined"類型
Undefined類型只有一個值就是undefined。當變數聲明後沒有初始化,這個變數的值就是undefined。如:var temp;
alert(temp == undefined); //這裡顯示為true,說明這兩個值是相等的
當一個函數沒有明確的傳回值時,它也將返回undefined
2."Null"類型
Null類型也只有一個值就是null。null其實是從undefined派生來的,也因此在ECMAScript中它們被定義為相等的。alert(null == undefined); //這裡顯示為true說明這兩個值是相等的
雖然這兩個值是相等的,但是它們的意義卻並不相同。undefined表示一個聲明了但沒有初始化的變數的值,null則表示尚未存在的對象,如果一個函數或方法要返回一個對象,但對象不存在時就應用null而不是undefined。
3."Number"類型
在ECMAScript中Number既可以表示整數也可以表示浮點數。整數也可以有8進位(0開頭)和16進位(0x開頭)表示
Number類型還有幾個特殊值:Number.MAX_VALUE(可以表示的最大值),Number.MIN_VALUE(可以表示的最小值),當超過最大值是變數將被賦予Number.POSITIVE_INFINITY,當小於最小值時變數將被賦予Number.NEGATIVE_INFINITY。
由於無窮大可以是正數也可以是負數,因此只有一個函數來判斷是否越界(isFinit函數)
最後還有一個特殊值NaN,它表示一個非數值(Not a Number)。一般來說只有當其它類型轉換成Number類型失敗時會被賦予NaN,但是NaN有一個奇特的地方就是它自身並不相等。alert(NaN == NaN); //顯示為false
出於這個原因,因此一般不推薦直接使用NaN,而是使用函數IsNaN來判斷。
4."String"類型
String是唯一一個沒有固定大小的原始類型。String儲存的為Unicode字元,字串中每個字元都有一個固定的位置,從下標0開始計算。字串的值可以用雙引號也可以用單引號聲明。
其實在ECMAScript中的Boolean,Number和String都是偽對象,這也就是說其實它們都是有屬性和方法的。這幾個類型都有個toString方法來轉換成字串類型。Number類型的toString方法有兩種模式,預設模式和基模式。預設模式下以10進位方式將值轉換成字串。在基模式下可以根據參數轉換成2進位,8進位,16進位,基就是要轉換成進位的基數。
字串轉換成數字,有兩種方法即:parseInt和parseFloat方法,分別對應整數和浮點數。轉換失敗則返回NaN。parseInt方法也有基模式。
強制類型轉換:
Boolean(val) 轉換成Boolean類型
Number(val) 轉換成Number類型
String(val) 轉換成String類型