国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

淺析JavaScript中的特殊數據類型

2019-11-19 14:43:26
字體:
來源:轉載
供稿:網友

在JavaScript中,有6大數據類型,分別包括string,number,boolean,undefined,null 和 object

一、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  // NaNparseInt( "abc" ) // NaNparseFloat( "abc" ) //NaNNumber( "abc" )  //NaN

對于數字+字符的值,其轉化結果會有所不同:

Number( "123abc" ); //NaNparseInt( "123abc" ); //123parseInt( "123abc45" ); //123parseFloat( "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); //undefinedconsole.log(obj. get ); //undefinedtypeof 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); //nulltypeof p ; // "object"typeof null ; // "object"

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

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

另外:

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

總結

以上所述是小編給大家介紹的JavaScript中的特殊數據類型,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 墨竹工卡县| 黎城县| 闸北区| 英吉沙县| 修武县| 长垣县| 贵阳市| 乐业县| 南部县| 肇州县| 深水埗区| 庄河市| 八宿县| 平昌县| 榕江县| 三穗县| 兴宁市| 敖汉旗| 马公市| 衡水市| 靖州| 科尔| 鸡西市| 塔城市| 临湘市| 宁城县| 平武县| 霍州市| 湖口县| 达州市| 灵山县| 永平县| 紫阳县| 平谷区| 达孜县| 阜阳市| 合水县| 梅河口市| 彰化市| 调兵山市| 浏阳市|