[JavaScript]-----數據類型上

一 簡單數據類型

ECMAScript 中有5 種簡單數據類型:Undefined、Null、Boolean、Number 和String。

還有一種複雜數據類型——Object。

ECMAScript 不支持任何創建自定義類型的機制,所有值都成爲以上6 中數據類型之一。

二 typeof操作符

用法 typeof xxx

typeof 操作符可以操作變量,也可以操作字面量。雖然也可以這樣使用:typeof(box),
但,typeof 是操作符而非內置函數。PS:函數在ECMAScript 中是對象,不是一種數據類型。
所以,使用typeof 來區分function 和object 是非常有必要的。

三 Undefined 類型

Undefined類型只有一個值,即特殊的undefined。在使用var變量前,但沒有對其初始化時,這個變量就是undefined。

var box;

alert(box);

注意:未初始化的變量與根本不存在的變量是不一樣的。


四  Null類型

Null 類型是一個只有一個值的數據類型,即特殊的值null。它表示一個空對象引用(指針),而typeof 操作符檢測null 會返回object。
var box = null;
alert(typeof box);

由於undefined 和null 兩個值的比較是相等的,所以,未初始化的變量和賦值爲null 的
變量會相等。這時,可以採用typeof 變量的類型進行比較。但,建議還是養成編碼的規範,
不要忘記初始化變量。
var box;
var car = null;
alert(typeof box == typeof car)


五 Boolean類型

雖然Boolean 類型的字面量只有true 和false 兩種,但ECMAScript 中所有類型的值都有
與這兩個Boolean 值等價的值。要將一個值轉換爲其對應的Boolean 值,可以使用轉型函數
Boolean()。

var hello = 'Hello World!';
var hello2 = Boolean(hello);
alert(typeof hello);
上面是一種顯示轉換,屬於強制性轉換。而實際應用中,還有一種隱式轉換。比如,在
if 條件語句裏面的條件判斷,就存在隱式轉換。
var hello = 'Hello World!';
if (hello) {
  alert('如果條件爲true,就執行我這條!');
} else {
  alert('如果條件爲false,就執行我這條!');
}

數據類型 轉換爲true的值 轉換爲false的值
Boolean true false
String 任何非空字符 空字符
Number 任何非零數字值(包括無窮大) 0和NaN
Object 任何對象 null
Undefined   undefined

六 Number

要想確定一個數值到底是否超過了規定範圍,可以使用isFinite()函數。如果沒有超過,
返回true,超過了返回false。

var box = 100e1000;
alert(isFinite(box)); //返回false 或者true


NaN,即非數值(Not a Number)是一個特殊的值,這個數值用於表示一個本來要返回數
值的操作數未返回數值的情況(這樣就不會拋出錯誤了)。

比如,在其他語言中,任何數值除
以0 都會導致錯誤而終止程序執行。但在ECMAScript 中,會返回出特殊的值,因此不會影
響程序執行。
var box = 0 / 0; //NaN
var box = 12 / 0; //Infinity
var box = 12 / 0 * 0; //NaN

可以通過Number.NaN 得到NaN 值,任何與NaN 進行運算的結果均爲NaN,NaN 與自
身不相等(NaN 不與任何值相等)。
alert(Number.NaN); //NaN
alert(NaN+1); //NaN
alert(NaN == NaN) //false

ECMAScript 提供了isNaN()函數,用來判斷這個值到底是不是NaN。isNaN()函數在接
收到一個值之後,會嘗試將這個值轉換爲數值。

alert(isNaN(NaN)); //true
alert(isNaN(25)); //false,25 是一個數值
alert(isNaN('25')); //false,'25'是一個字符串數值,可以轉成數值
alert(isNaN('Lee')); //true,'Lee'不能轉換爲數值
alert(isNaN(true)); //false true 可以轉成成1

有3 個函數可以把非數值轉換爲數值:Number()、parseInt()和parseFloat()。Number()
函數是轉型函數,可以用於任何數據類型,而另外兩個則專門用於把字符串轉成數值。
alert(Number(true)); //1,Boolean 類型的true 和false 分別轉換成1 和0
alert(Number(25)); //25,數值型直接返回
alert(Number(null)); //0,空對象返回0
alert(Number(undefined)); //NaN,undefined 返回NaN


由於Number()函數在轉換字符串時比較複雜且不夠合理,因此在處理整數的時候更常
用的是parseInt()。
alert(parsetInt('456Lee')); //456,會返回整數部分
alert(parsetInt('Lee456Lee')); //NaN,如果第一個不是數值,就返回NaN
alert(parseInt('12Lee56Lee')); //12,從第一數值開始取,到最後一個連續數值結束
alert(parseInt('56.12')); //56,小數點不是數值,會被去掉
alert(parseInt('')); //NaN,空返回NaN

parseFloat()是用於浮點數值轉換的,和parseInt()一樣,從第一位解析到非浮點數值位置。
alert(parseFloat('123Lee')); //123,去掉不是別的部分
alert(parseFloat('0xA')); //0,不認十六進制
alert(parseFloat('123.4.5')); //123.4,只認一個小數點
alert(parseFloat('0123.400')); //123.4,去掉前後導
alert(parseFloat('1.234e7')); //12340000,把科學技術法轉成普通數值

七 String類型

如果在轉型之前不知道變量是否是null 或者undefined 的情況下,我們還可以使用轉型
函數String(),這個函數能夠將任何類型的值轉換爲字符串。
var box = null;
alert(String(box));
PS:如果值有toString()方法,則調用該方法並返回相應的結果;如果是null 或者
undefined,則返回"null"或者"undeinfed"。

八 Object

ECMAScript 中的對象其實就是一組數據和功能的集合。對象可以通過執行new 操作符
後跟要創建的對象類型的名稱來創建。
var box = new Object();

Object()是對象構造,如果對象初始化時不需要傳遞參數,可以不用寫括號,但這種方
式我們是不推薦的。
var box = new Object;


Object()裏可以任意傳參,可以傳數值、字符串、布爾值等。而且,還可以進行相應的
計算。
var box = new Object(2); //Object 類型,值是2
var age = box + 2; //可以和普通變量運算
alert(age); //輸出結果,轉型成Number 類型了
既然可以使用new Object()來表示一個對象,那麼我們也可以使用這種new 操作符來創
建其他類型的對象。
var box = new Number(5); //new String('Lee')、new Boolean(true)
alert(typeof box); //Object 類型



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章