JS里的數(shù)據(jù)類型

JS里有七種數(shù)據(jù)類型:number? string? ?boolean null? undefined? symbol object?

1.null 與 undefined 都可以表示‘沒有’,含義非常相似。運用相等運算符(==)瀏覽器直接報告相等,運用(===)運算符則為false

為什么JavaScript 的設(shè)計者 Brendan Eich要設(shè)計null 與 undefined:1995年 JavaScript 誕生時,最初像 Java 一樣,只設(shè)置了null表示"無"。根據(jù) C 語言的傳統(tǒng),null可以自動轉(zhuǎn)為0。但是,JavaScript 的設(shè)計者 Brendan Eich,覺得這樣做還不夠。首先,第一版的 JavaScript 里面,null就像在 Java 里一樣,被當成一個對象,Brendan Eich 覺得表示“無”的值最好不是對象。其次,那時的 JavaScript 不包括錯誤處理機制,Brendan Eich 覺得,如果null自動轉(zhuǎn)為0,很不容易發(fā)現(xiàn)錯誤。

因此,他又設(shè)計了一個undefined。區(qū)別是這樣的:null是一個表示“空”的對象,轉(zhuǎn)為數(shù)值時為0;undefined是一個表示"此處無定義"的原始值,轉(zhuǎn)為數(shù)值時為NaN。

區(qū)別:1.變量沒有賦值:undefined??

? ? ? ? ? ?2.有一個對象,現(xiàn)在不想賦值,推薦初始化為null

? ? ? ? ? ?3.有一個非對象,現(xiàn)在不想賦值,推薦初始化為undefined.

2.布爾值:boolean: 代表“真”和“假”兩個狀態(tài)?!罢妗庇藐P(guān)鍵字true表示,“假”用關(guān)鍵字false表示。布爾值只有這兩個值。

undefined? null false 0 NaN ""或''(空字符串)? 轉(zhuǎn)化成布爾值都為 false。其它值都為true。注意,空數(shù)組([])和空對象({})對應的布爾值,都是true。

3.number:整數(shù)和浮點數(shù)? JavaScript 內(nèi)部,所有數(shù)字都是以64位浮點數(shù)形式儲存,即使整數(shù)也是如此。所以,1與1.0是相同的,是同一個數(shù)。

十進制:沒有前導0的數(shù)值。

八進制:有前綴0o或0O的數(shù)值,或者有前導0、且只用到0-7的八個阿拉伯數(shù)字的數(shù)值。

十六進制:有前綴0x或0X的數(shù)值

二進制:有前綴0b或0B的數(shù)值。

NaN是 JavaScript 的特殊值,表示“非數(shù)字”(Not a Number),主要出現(xiàn)在將字符串解析成數(shù)字出錯的場合。NaN不是獨立的數(shù)據(jù)類型,而是一個特殊數(shù)值,它的數(shù)據(jù)類型依然屬于Number,使用typeof運算符可以看得很清楚。NaN不等于任何值,包括它本身。

isNaN()方法可以用來判斷一個值是否為NaN。?isFinite()方法返回一個布爾值,表示某個值是否為正常的數(shù)值。

4.string:字符串就是零個或多個排在一起的字符,放在單引號或雙引號之中。單引號字符串的內(nèi)部,可以使用雙引號。雙引號字符串的內(nèi)部,可以使用單引號。如果要在單引號字符串的內(nèi)部,使用單引號,就必須在內(nèi)部的單引號前面加上反斜杠,用來轉(zhuǎn)義。雙引號字符串內(nèi)部使用雙引號,也是如此。

轉(zhuǎn)義:反斜杠(\)在字符串內(nèi)有特殊含義,用來表示一些特殊字符,所以又稱為轉(zhuǎn)義符。需要用反斜杠轉(zhuǎn)義的特殊字符,主要有下面這些。

\0?:null(\u0000)

\b?:后退鍵(\u0008)

\f?:換頁符(\u000C)

\n?:換行符(\u000A)

\r?:回車鍵(\u000D)

\t?:制表符(\u0009)

\v?:垂直制表符(\u000B)

\'?:單引號(\u0027)

\"?:雙引號(\u0022)

\\?:反斜杠(\u005C)

5.object:對象(object)是 JavaScript 語言的核心概念,也是最重要的數(shù)據(jù)類型。什么是對象?簡單說,對象就是一組“鍵值對”(key-value)的集合,是一種無序的復合數(shù)據(jù)集合。

對象的所有鍵名都是字符串(ES6 又引入了 Symbol 值也可以作為鍵名),所以加不加引號都可以。如果鍵名是數(shù)值,會被自動轉(zhuǎn)為字符串。

如果鍵名不符合標識名的條件【

第一個字符,可以是任意 Unicode 字母(包括英文字母和其他語言的字母),以及美元符號($)和下劃線(_)。

第二個字符及后面的字符,除了 Unicode 字母、美元符號和下劃線,還可以用數(shù)字0-9?!壳乙膊皇菙?shù)字,則必須加上引號,否則會報錯。

讀取對象的屬性,有兩種方法,一種是使用點運算符,還有一種是使用方括號運算符。請注意,如果使用方括號運算符,鍵名必須放在引號里面,否則會被當作變量處理。數(shù)字鍵可以不加引號,因為會自動轉(zhuǎn)成字符串。運用點運算的時候就會把它看成一個字符串。

點運算符和方括號運算符,不僅可以用來讀取值,還可以用來賦值。

查看一個對象本身的所有屬性,可以使用Object.keys方法。

delete命令用于刪除對象的屬性,刪除成功后返回true。

in運算符用于檢查對象是否包含某個屬性(注意,檢查的是鍵名,不是鍵值),如果包含就返回true,否則返回false。它的左邊是一個字符串,表示屬性名,右邊是一個對象。

for...in循環(huán)用來遍歷一個對象的全部屬性。

它遍歷的是對象所有可遍歷(enumerable)的屬性,會跳過不可遍歷的屬性。

它不僅遍歷對象自身的屬性,還遍歷繼承的屬性。



? ? ?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容