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

JavaScript中的特殊資料型別詳解

小云云
小云云原創
2017-12-18 09:33:142375瀏覽

在JavaScript中,有6大資料類型,分別包含string,number,boolean,undefined,null 和 object。以下透過本文為大家介紹JavaScript中的特殊資料類型,需要的朋友參考下吧,希望能幫助大家。

一、JS中的特殊型別:NaN

NaN 即Not a Number , 不是一個數字, 那麼NaN到底是什麼呢? 而對於JS來說,整數和浮點數都統稱為number 類型,除此之外,number 類型還有一個很特殊的值,即NaN,它是用來表示是否屬於number 類型的一種狀態,而不是一個確切的值(所以,NaN不等於自身)。

那麼,NaN值一般會在什麼情況下出現呢?

一般有兩種情況:

(1) 一個表達式中如果有減號(-)、乘號(*) 或除號(/) 等運算子時,JS引擎會在計算之前試圖將運算子兩邊的變數轉換為number類型(使用Number(x)做轉換),如果轉換失敗,則表達式將傳回NaN;有加號(+)運算子不會將其兩邊的變數轉換為number類型,這是因為JS表達式的執行順序是按照運算子的優先權從左到右依序進行的,如果加號(+) 兩邊的變數都是number型別時,才會做數字相加運算,如果其中有一個變數是字串,則會將兩邊都作為字串相加,如: 5+4+"6"="96"

(2) 直接使用parseInt,parseFloat或Number 將一個非數字的值轉換為數字時,表達式會傳回NaN

"abc" - 3  // NaN
parseInt( "abc" ) // NaN
parseFloat( "abc" ) //NaN
Number( "abc" )  //NaN

對於數字+字元的值,其轉換結果會有所不同:

Number( "123abc" ); //NaN
parseInt( "123abc" ); //123
parseInt( "123abc45" ); //123
parseFloat( "123.45abc" ); //123.45

這是因為Number轉換的整個值,而不是部分值,parseInt 和parseFloat 只轉換第一個無效字元之前的字串。

因此,當一個字串不能被Number,parseInt,parseFloat成功轉換時,就回傳NaN,表示該字串無法被識別為數字類型,這是一個異常狀態,並不是一個確切的值。

所以 NaN != NaN , 因為它是一個異常狀態,而不是一個確切的值。

另外,與NaN相關的還有一個函數,即 isNaN() , 它的作用是檢查一個字串是否能被 Number() 成功轉換,即強制轉化整個字串。

isNaN( "123" )  //false 能转换
isNaN( "abc" )  //true 不能转换
isNaN( "123abc" )  //true 部分可转换,但整体不能转换
isNaN( "123.45abc" ) //true 部分可转换,但整体不能转换

二、JS中還有另外兩個特殊類型:undeinfed 和null

undefined 是JavaScript 6種資料類型中的一種,該類型只有一個值,也就是undefined。 undefined意為`未定義`,即當使用var宣告了變數但未進行賦值時,這個變數的值就是undefined,其產生的原因有兩種:

(1)存取物件不存在的屬性或方法

(2)宣告了變數但從未賦值

var v1,obj = {};
console.log(v1); //undefined
console.log(obj. get ); //undefined
typeof v1; // "undefined"
typeof v2; // "undefined"
typeof obj. get ; // "undefine"
typeof obj ; // "object"

和NaN不同的是,undefined雖然也代表變數的一個狀態,但這個狀態值是決定唯一的,即當一個變數宣告了但沒有賦值時,它的狀態就是undefined ,因此下面表達式是成立的:

var b;
b == undefined; //true

理解了undefined 以後,再理解null 就容易多了,null型別也只有一個值:null , 表示一個變數中沒有包含有效資料。 null在這裡意為空值、空物件的意思,更確切的說,一個被賦值為null的變數沒有保存有效的數值、字串、布林、陣列或物件等,可以透過給一個變數賦值為null來清空變數中的內容。產生null的原因只有一個:即對一個變數明確的賦值為null 。

var p = null ;
console.log(p); //null
typeof p ; // "object"
typeof null ; // "object"

還是和NaN來比較,null 也是一個確定切唯一的狀態值,當一個變數被賦值為null時,那麼它就和null相等,因此下面表達式也是成立的:

var obj = null ;
obj == null ; //true

#另外:

var  v1 = null;
var v2;
console.log(v1 + 1 ); // 1
console.log(v2 + 1 ); //NaN
var i = i +1;
var j = i+ 1;
console.log(i); // NaN
console.log(j ); //NaN
console.log(i == j ); //false

##相關推薦:


PHP自學no00010特殊資料型別之空值

JS開發中基本資料型別具體介紹

#關於js中基本資料型別、引用資料型別區別#

以上是JavaScript中的特殊資料型別詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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