在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##相關推薦:
以上是JavaScript中的特殊資料型別詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。