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

數(shù)據(jù)類(lèi)型


JavaScript 的數(shù)據(jù)類(lèi)型常見(jiàn)的有6種, 分別為undefined、null、布爾值 (boolean)、數(shù)值 (number)、字符串 (string)、對(duì)象 (object) Symbol (ES6 新增), 其中Symbol為新增的第7種. 由于剛接觸js, 這里我們暫時(shí)只討論前6種。簡(jiǎn)單類(lèi)型應(yīng)該分為:undefined、null、boolean、number、string, 復(fù)雜類(lèi)型包括:object



?typeof運(yùn)算符

typeof可以檢測(cè)變量或者參數(shù)的類(lèi)型,特例是:typeof null返回'object',typeof 函數(shù)返回'function'



?數(shù)值 (number)

Number

JavaScript 內(nèi)部,所有數(shù)字都是以64位浮點(diǎn)數(shù)形式儲(chǔ)存,整數(shù)也是這樣。所以,1與1.0是相同的,是同一個(gè)數(shù)。由于浮點(diǎn)數(shù)不是精確的值,所以涉及小數(shù)的比較和運(yùn)算要特別小心。
數(shù)值的精度及大小
根據(jù)國(guó)際標(biāo)準(zhǔn) IEEE 754,JavaScript 浮點(diǎn)數(shù)的64個(gè)二進(jìn)制位,從最左邊開(kāi)始,是這樣組成的。
第1位:符號(hào)位,0表示正數(shù),1表示負(fù)數(shù)
第2位到第12位 (共11位):指數(shù)部分
第13位到第64位 (共52位):小數(shù)部分 (即有效數(shù)字)
符號(hào)位決定了一個(gè)數(shù)的正負(fù),指數(shù)部分決定了數(shù)值的大小,小數(shù)部分決定了數(shù)值的精度。
數(shù)值的進(jìn)制
十進(jìn)制 11 //11
二進(jìn)制 0b11 //3
八進(jìn)制 0o11 //9
十六進(jìn)制 0x11 //17

isNaN(n)

數(shù)值轉(zhuǎn)換

Number(n) 強(qiáng)制的把一個(gè)值強(qiáng)制的轉(zhuǎn)為數(shù)字類(lèi)型,如果遇到字符串轉(zhuǎn)不了,則返回NaN。
/*var topVal = "28px";
//這時(shí)候是字符串減去數(shù)值,返回值是NaN
console.log(topVal-10);
*/
// parseInt操作的字符串必須以數(shù)字開(kāi)頭,把數(shù)字在前的字符串強(qiáng)制轉(zhuǎn)為數(shù)值,有幾位提取幾位,直到遇到非數(shù)字,如果為非數(shù)字開(kāi)頭,則返回NaN
var topVal = parseInt("28px")
console.log(topVal-10);// 返回時(shí)18
ParseInt操作的字符串如果以數(shù)字開(kāi)頭,則會(huì)把數(shù)字在前的字符串強(qiáng)制轉(zhuǎn)為數(shù)值,有幾位提取幾位,直到遇到非數(shù)字,如果為非數(shù)字開(kāi)頭,則返回NaN



?字符串 (string)


//方法一
var ids = 78965;
var idstr = ids.toString();
console.log(typeof idstr); //這時(shí)候78965就已經(jīng)變成了字符串string

//方法二
console.log(string(ids));//盡量用這個(gè)方法

字符串就是放在單引號(hào)或雙引號(hào)之中的字符。
反斜杠 ()用來(lái)表示一些特殊字符,比如:\n 表示換行符
字符集
JavaScript 使用 Unicode 字符集。允許直接在程序中使用 Unicode 碼點(diǎn)表示字符,輸出給用戶(hù)的時(shí)候,所有字符都會(huì)轉(zhuǎn)成字面形式。
JavaScript 的單位字符長(zhǎng)度固定為16位長(zhǎng)度,即2個(gè)字節(jié)。但是,UTF-16 有兩種長(zhǎng)度:對(duì)于碼點(diǎn)在U+0000到U+FFFF之間的字符,長(zhǎng)度為16位 (即2個(gè)字節(jié));對(duì)于碼點(diǎn)在U+10000到U+10FFFF之間的字符,長(zhǎng)度為32位 (即4個(gè)字節(jié)),對(duì)于碼點(diǎn)在U+10000到U+10FFFF之間的字符,JavaScript 總是認(rèn)為它們是兩個(gè)字符。
Base64轉(zhuǎn)碼
Base64 可以將任意值轉(zhuǎn)成 0~9、A~Z、a-z、+和/這64個(gè)字符組成的可打印字符。
btoa():任意值轉(zhuǎn)為 Base64 編碼
atob():Base64 編碼轉(zhuǎn)為原來(lái)的值



?布爾值 (boolean)

布爾值只有true和false這兩個(gè)值。如果 JavaScript 預(yù)期某個(gè)位置應(yīng)該是布爾值,會(huì)將該位置上現(xiàn)有的值自動(dòng)轉(zhuǎn)為布爾值。undefined、null、false、0、NaN、""或'' (空字符串)這六個(gè)值會(huì)被轉(zhuǎn)為false,其他值都為true。特別注意:空數(shù)組[]和空對(duì)象{}都為true。

number、string、boolean這三種類(lèi)型為原始類(lèi)型,object為合成類(lèi)型,一個(gè)對(duì)象往往是多個(gè)原始類(lèi)型的值的合成,null和undefined是兩個(gè)特殊值。



?undefined和null


都表示沒(méi)有值。
1.(規(guī)范)如果一個(gè)變量沒(méi)有被賦值,那么這個(gè)變量的值就是undefined。
2.(習(xí)俗)如果你想表示一個(gè)還沒(méi)有被賦值的對(duì)象,就用null,如果你想表示一個(gè)還沒(méi)被賦值的字符串/數(shù)字/布爾/symbol就用undefined(直接var a;就行了,不用寫(xiě)var a = undefined; )
undefined 的類(lèi)型只有一個(gè)值,即特殊值,即特殊的undefined, 表示"未定義",轉(zhuǎn)為數(shù)值時(shí)為NaN。
NaN不等于NaN?。?!如果想聲明一個(gè)變量的類(lèi)型是undefined 直接var 變量 變量不賦值即可。

null與undefined都可以表示“空”,非常相似。區(qū)別在于:null是一個(gè)表示“空”的對(duì)象,轉(zhuǎn)為數(shù)值時(shí)為0;



?對(duì)象

對(duì)象就是一組“鍵值對(duì)” (key-value)的集合,是一種無(wú)序的復(fù)合數(shù)據(jù)集合。它的值可以是任意的數(shù)據(jù)類(lèi)型包括對(duì)象自身,下圖是一個(gè)對(duì)象:

讀取對(duì)象值的方法
1.obj.key:

2.obj['key']:


對(duì)象的所有鍵名都是字符串
讀取對(duì)象的屬性,有兩種方法,一種是使用點(diǎn)運(yùn)算符,還有一種是使用方括號(hào)運(yùn)算符。請(qǐng)注意,如果使用方括號(hào)運(yùn)算符,鍵名必須放在引號(hào)里面,否則會(huì)被當(dāng)作變量處理。
查看一個(gè)對(duì)象本身的所有屬性,可以使用Object.keys方法
屬性是否存在:in運(yùn)算符用于檢查對(duì)象是否包含某個(gè)屬性。in運(yùn)算符的一個(gè)問(wèn)題是,它不能識(shí)別哪些屬性是對(duì)象自身的,哪些屬性是繼承的??梢允褂脤?duì)象的hasOwnProperty方法判斷一下,是否為對(duì)象自身的屬性。
for...in循環(huán)用來(lái)遍歷一個(gè)對(duì)象的全部屬性。
它遍歷的是對(duì)象所有可遍歷 (enumerable)的屬性,會(huì)跳過(guò)不可遍歷的屬性。
它不僅遍歷對(duì)象自身的屬性,還遍歷繼承的屬性。

1.對(duì)象對(duì)面可以有對(duì)象。
2.object的key一律是字符串,不存在其他類(lèi)型的key。
3.object['']是合法的。
4.object['name']可以寫(xiě)做object[name],注意object.key和object[key]不同
5.刪除對(duì)象中的某一項(xiàng) delete object[‘key’] 直接刪除整項(xiàng)包括鍵名
對(duì)象內(nèi)使用delete刪除的是鍵名+鍵值(使用in查詢(xún)不到鍵名),而將鍵 值設(shè)置為undefined,鍵名還是依然存在的(可以通過(guò)in查詢(xún)到)。
6.讀取兩種方式:object.key object["key"] 如果key為3+3的形式,會(huì)自動(dòng)運(yùn)算后再取值。
7.查詢(xún)一個(gè)鍵是否在對(duì)象內(nèi) 鍵名 in 對(duì)象

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

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

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