欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript的數(shù)據(jù)類型詳細(xì)分解

  發(fā)布時(shí)間:2015-04-02 10:29:53   作者:佚名   我要評(píng)論
這篇文章主要介紹了JavaScript的數(shù)據(jù)類型詳解,,需要的朋友可以參考下

  數(shù)據(jù)類型

  JavaScript中有5種簡(jiǎn)單數(shù)據(jù)類型(也稱為基本數(shù)據(jù)類型):Undefined、Null、Boolean、Number和String。還有1種復(fù)雜數(shù)據(jù)類型——Object,Object本質(zhì)上是由一組無(wú)序的名值對(duì)組成的。

  typeof操作符

  介于JavaScript是松散類型的,因此需要有一種手段來(lái)檢測(cè)給定變量的數(shù)據(jù)類型——typeof就是負(fù)責(zé)提供者方面信息的操作符。對(duì)一個(gè)值使用typeof操作符可能返回下列某個(gè)字符串:

  ● "undefined"——如果這個(gè)值未定義;

  ● "boolean"——如果這個(gè)值是布爾值;

  ● "string"——如果這個(gè)值是字符串;

  ● "number"——如果這個(gè)值是數(shù)值;

  ● "object"——如果這個(gè)值是對(duì)象或null;

  ● "function"——如果這個(gè)值是函數(shù);

  Undefined類型

  Undefined類型只有一個(gè)值,即特殊的undefined。在使用var聲明變量但未對(duì)其加以初始化時(shí),這個(gè)變量的值就是undefined,例如:

  復(fù)制代碼 代碼如下:

  var message;

  alert(message == undefined) //true

  Null類型

  Null類型是第二個(gè)只有一個(gè)值的數(shù)據(jù)類型,這個(gè)特殊的值是null。從邏輯角度來(lái)看,null值表示一個(gè)空對(duì)象指針,而這也正是使用typeof操作符檢測(cè)null時(shí)會(huì)返回"object"的原因,例如:

  復(fù)制代碼 代碼如下:

  var car = null;

  alert(typeof car); // "object"

  如果定義的變量準(zhǔn)備在將來(lái)用于保存對(duì)象,那么最好將該變量初始化為null而不是其他值。這樣一來(lái),只要直接檢測(cè)null值就可以知道相應(yīng)的變量是否已經(jīng)保存了一個(gè)對(duì)象的引用了,例如:

  復(fù)制代碼 代碼如下:

  if(car != null)

  {

  //對(duì)car對(duì)象執(zhí)行某些操作

  }

  實(shí)際上,undefined值是派生自null值的,因此ECMA-262規(guī)定對(duì)它們的相等性測(cè)試要返回true。

  復(fù)制代碼 代碼如下:

  alert(undefined == null); //true

  盡管null和undefined有這樣的關(guān)系,但它們的用途完全不同。無(wú)論在什么情況下都沒(méi)有必要把一個(gè)變量的值顯式地設(shè)置為undefined,可是同樣的規(guī)則對(duì)null卻不適用。換句話說(shuō),只要意在保存對(duì)象的變量還沒(méi)有真正保存對(duì)象,就應(yīng)該明確地讓該變量保存null值。這樣做不僅可以體現(xiàn)null作為空對(duì)象指針的慣例,而且也有助于進(jìn)一步區(qū)分null和undefined。

  Boolean類型

  該類型只有兩個(gè)字面值:true和false。這兩個(gè)值與數(shù)字值不是一回事,因此true不一定等于1,而false也不一定等于0。

  雖然Boolean類型的字面值只有兩個(gè),但JavaScript中所有類型的值都有與這兩個(gè)Boolean值等價(jià)的值。要將一個(gè)值轉(zhuǎn)換為其對(duì)應(yīng)的Boolean值,可以調(diào)用類型轉(zhuǎn)換函數(shù)Boolean(),例如:

  復(fù)制代碼 代碼如下:

  var message = 'Hello World';

  var messageAsBoolean = Boolean(message);

  在這個(gè)例子中,字符串message被轉(zhuǎn)換成了一個(gè)Boolean值,該值被保存在messageAsBoolean變量中??梢詫?duì)任何數(shù)據(jù)類型的值調(diào)用Boolean()函數(shù),而且總會(huì)返回一個(gè)Boolean值。至于返回的這個(gè)值是true還是false,取決于要轉(zhuǎn)換值的數(shù)據(jù)類型及其實(shí)際值。下表給出了各種數(shù)據(jù)類型及其對(duì)象的轉(zhuǎn)換規(guī)則。

JavaScript數(shù)據(jù)類型詳解 三聯(lián)

  這些轉(zhuǎn)換規(guī)則對(duì)理解流控制語(yǔ)句(如if語(yǔ)句)自動(dòng)執(zhí)行相應(yīng)的Boolean轉(zhuǎn)

  換非常重要,例如:

  復(fù)制代碼 代碼如下:

  var message = 'Hello World';

  if(message)

  {

  alert("Value is true");

  }

  運(yùn)行這個(gè)示例,就會(huì)顯示一個(gè)警告框,因?yàn)樽址甿essage被自動(dòng)轉(zhuǎn)換成了對(duì)應(yīng)的Boolean值(true)。由于存在這種自動(dòng)執(zhí)行的Boolean轉(zhuǎn)換,因此確切地知道在流控制語(yǔ)句中使用的是什么變量至關(guān)重要。

  Number類型

  這種類型用來(lái)表示整數(shù)和浮點(diǎn)數(shù)值,還有一種特殊的數(shù)值,即NaN(非數(shù)值 Not a Number)。這個(gè)數(shù)值用于表示一個(gè)本來(lái)要返回?cái)?shù)值的操作數(shù)未返回?cái)?shù)值的情況(這樣就不會(huì)拋出錯(cuò)誤了)。例如,在其他編程語(yǔ)言中,任何數(shù)值除以0都會(huì)導(dǎo)致錯(cuò)誤,從而停止代碼執(zhí)行。但在JavaScript中,任何數(shù)值除以0會(huì)返回NaN,因此不會(huì)影響其他代碼的執(zhí)行。

  NaN本身有兩個(gè)非同尋常的特點(diǎn)。首先,任何涉及NaN的操作(例如NaN/10)都會(huì)返回NaN,這個(gè)特點(diǎn)在多步計(jì)算中有可能導(dǎo)致問(wèn)題。其次,NaN與任何值都不相等,包括NaN本身。例如,下面的代碼會(huì)返回false。

  復(fù)制代碼 代碼如下:

  alert(NaN == NaN); //false

  JavaScript中有一個(gè)isNaN()函數(shù),這個(gè)函數(shù)接受一個(gè)參數(shù),該參數(shù)可以使任何類型,而函數(shù)會(huì)幫我們確定這個(gè)參數(shù)是否“不是數(shù)值”。isNaN()在接收一個(gè)值之后,會(huì)嘗試將這個(gè)值轉(zhuǎn)換為數(shù)值。某些不是數(shù)值的值會(huì)直接轉(zhuǎn)換為數(shù)值,例如字符串”10“或Boolean值。而任何不能被轉(zhuǎn)換為數(shù)值的值都會(huì)導(dǎo)致這個(gè)函數(shù)返回true。例如:

  復(fù)制代碼 代碼如下:

  alert(isNaN(NaN)); //true

  alert(isNaN(10)); //false(10是一個(gè)數(shù)值)

  alert(isNaN("10")); //false(可能被轉(zhuǎn)換為數(shù)值10)

  alert(isNaN("blue")); //true(不能被轉(zhuǎn)換為數(shù)值)

  alert(isNaN(true)); //false(可能被轉(zhuǎn)換為數(shù)值1)

  有3個(gè)函數(shù)可以把非數(shù)值轉(zhuǎn)換為數(shù)值:Number()、parseInt()和parseFloat()。第一個(gè)函數(shù),即轉(zhuǎn)型函數(shù)Number()可以用于任何數(shù)據(jù)類型,而另外兩個(gè)函數(shù)則專門用于把字符串轉(zhuǎn)換成數(shù)值。這3個(gè)函數(shù)對(duì)于同樣的輸入會(huì)返回不同的結(jié)果。

相關(guān)文章

最新評(píng)論