首頁  >  文章  >  web前端  >  JavaScript中資料型別詳解

JavaScript中資料型別詳解

黄舟
黄舟原創
2017-03-01 15:00:371317瀏覽

1.Undefined類型

Undefined 類型只有一個值,即特殊的undefined。在使用var 宣告變數但未對其加以初始化時,這個變數的值就是undefined,例如:

#
var message;
alert(message == undefined); //true

##這個範例只宣告了變數message,但未對其進行初始化。比較這個變數與undefined 字面量,結果實表明它們是相等的。這個例子與下面的例子是等價的:
var message = undefined;
alert(message == undefined); //true

這個例子使用undefined 值明確初始化了變數message。但我們沒有必要這麼做,因為未經初始化的值預設就會取得undefined 值。

2.Null類型


#Null 類型是第二個只有一個值的資料類型,這個特殊的值是null 。從邏輯角度來看,null 值表示一個空物件指針,而這也正是使用typeof 運算子偵測null 值時會返回"object"的原因,如下面的範例所示:
##
var car = null;
alert(typeof car); // "object"

如果定義的變數準備在將來用於保存對象,那麼最好將該變數初始化為null 而不是其他值。這樣一來,只要直接檢查null 值就可以知道對應的變數是否已經保存了一個物件的引用,如下面的例子所示:

if (car != null){
// 对car 对象执行某些操作
}

#實際上, undefined 值是衍生自null 值的,因此ECMA-262 規定對它們的相等性測試要傳回true:


alert(null == undefined); //true

這裡,位於null 和undefined 之間的相等運算子(==)總是回傳true,不過要注意的是,這個運算子會在比較的目的轉換其運算元(本章後面將詳細介紹相關內容)。儘管null 和undefined 有這樣的關係,但它們的用途完全不同。如前所述,無論在什麼情況下都沒有必要把一個變數的值明確地設定為undefined,可是同樣的規則對null 卻不適用。換句話說,只要意在保存對象的變數還沒有真正保存對象,就應該明確地讓該變數保存null 值。這樣做不僅可以

體現null 作為空物件指標的慣例,而且也有助於進一步區分null 和undefined。

3.Boolean類型

此類型只有兩個字面上值:true和false。這兩個值與數字值不是一回事。

因此true 不一定等於1,而false 也不一定等於0。以下是變數賦

Boolean 類型值的範例:


var found = true;
var lost = false;

需要注意的是,Boolean 類型的字面值true和false 是區分大小寫的。也就是說,True 和False(以及其他的混合大小寫形式)都不是Boolean 值,只是識別碼。雖然Boolean 類型的字面值只有兩個,但ECMAScript 中所有類型的值都有與這兩個Boolean 值等價的值。若要將一個值轉換為其對應的Boolean 值,可以呼叫轉型函數Boolean(),如下例所示:


var message = "Hello world!";
var messageAsBoolean = Boolean(message);
BooleanExample01.htm

在這個例子中,字串message 被轉換成了一個Boolean 值,該值被保存在messageAsBoolean變數中。可以對任何資料類型的值呼叫Boolean()函數,而且總是會傳回一個Boolean 值。至於傳回的這個值是true 還是false,取決於要轉換值的資料型別及其實際值。下表給出了各種資料類型及其對應的轉換規則。


#資料類型轉換為#轉換為

true

的值

false

的值

#Boolean

true

false

String

任何非空字串

""(空字串)

#Number

任何非零數字值(包括無窮大)

0和NaN

Object Undefined

任何物件

#null

 

undefined

#

 

undefined

4.Number类型

5.NaN

NaN,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。例如,在其他编程语言中,任何数值除以0 都会导致错误,从而停止代码执行。但在ECMAScript 中,任何数值除以0 会返回NaN①,因此不会影响其他代码的执行。NaN 本身有两个非同寻常的特点。首先,任何涉及NaN 的操作(例如NaN/10)都会返回NaN,这个特点在多步计算中有可能导致问题。其次,NaN 与任何值都不相等,包括NaN 本身。例如,下面的代码会返回false:


alert(NaN == NaN); //false

针对NaN 的这两个特点,ECMAScript 定义了isNaN()函数。这个函数接受一个参数,该参数可以是任何类型,而函数会帮我们确定这个参数是否“不是数值”。isNaN()在接收到一个值之后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值,例如字符串"10"或Boolean 值。而任何不能被转换为数值的值都会导致这个函数返回true。请看下面的例子:

alert(isNaN(NaN)); //true
alert(isNaN(10)); //false(10 是一个数值)
alert(isNaN("10")); //false(可以被转换成数值10)
alert(isNaN("blue")); //true(不能转换成数值)
alert(isNaN(true)); //false(可以被转换成数值1)

6.数值转换

有3 个函数可以把非数值转换为数值:Number()、parseInt()和parseFloat()。第一个函数,即转型函数Number()可以用于任何数据类型,而另两个函数则专门用于把字符串转换成数值。这3 个函数对于同样的输入会有返回不同的结果

 以上就是JavaScript中数据类型详解的内容,更多相关内容请关注PHP中文网(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn