js里共有7種類型
3種原始類型:字符串(string) ,數(shù)值(number ),布爾值(boolean)
2種特殊值:undefined ,null
合成類型: object
symbol
typeof運算符可以返回一個值的數(shù)據(jù)類型。
數(shù)值、字符串、布爾值分別返回"number"、"string"、"boolean"。
對象返回"object"
undefined返回"undefined"
null返回"object"
typeof function = 'function'
1.字符串
JavaScript 使用 Unicode 字符集。JavaScript 引擎內(nèi)部,所有字符都用 Unicode 表示。javascript中每個字符都是以16位(2個字節(jié))的UTF-16格式存儲,對于碼點在U+10000到U+10FFFF之間的字符,JavaScript 總是認(rèn)為它們是兩個字符(length屬性為2)
1.Base64 是一種編碼方法,可以將任意值轉(zhuǎn)成 0~9、A~Z、a-z、+和/這64個字符組成的可打印字符,有時需要以文本格式傳遞二進(jìn)制數(shù)據(jù),那么也可以使用 Base64 編碼
- btoa():任意值轉(zhuǎn)為 Base64 編碼
- atob():Base64 編碼轉(zhuǎn)為原來的值
要將非 ASCII 碼字符轉(zhuǎn)為 Base64 編碼,必須中間插入一個轉(zhuǎn)碼環(huán)節(jié),再使用這兩個方法。
2.反斜杠(\)在字符串內(nèi)有特殊含義,用來表示一些特殊字符,所以又稱為轉(zhuǎn)義符。
需要用反斜杠轉(zhuǎn)義的特殊字符,主要有下面這些
- \0 :null(\u0000)
- \b :后退鍵(\u0008)
- \f :換頁符(\u000C)
- \n :換行符(\u000A)
- \r :回車鍵(\u000D)
- \t :制表符(\u0009)
- \v :垂直制表符(\u000B)
- ' :單引號(\u0027)
- " :雙引號(\u0022)
- \ :反斜杠(\u005C)
2.布爾值
如果 JavaScript 預(yù)期某個位置應(yīng)該是布爾值,會將該位置上現(xiàn)有的值自動轉(zhuǎn)為布爾值。轉(zhuǎn)換規(guī)則是除了下面六個值被轉(zhuǎn)為false,其他值都視為true。
- undefined
- null
- false
- 0
- NaN
- ""或''(空字符串)
3.數(shù)值
js中所有的數(shù)字都是以64為浮點數(shù)存儲的
第1位,符號位。0表示正數(shù),1表示負(fù)數(shù)
第2位到12位(共11),表示指數(shù)部分
第13為到64位(共52),表示小數(shù)部分
絕對值小于2的53次方的整數(shù)都可以精確表示
如果一個數(shù)大于等于2的1024次方,那么就會發(fā)生“正向溢出”,
如果一個數(shù)小于等于2的-1075次方(指數(shù)部分最小值-1023,再加上小數(shù)部分的52位),那么就會發(fā)生為“負(fù)向溢出”
數(shù)值的進(jìn)制:
- 十進(jìn)制:默認(rèn)都為十進(jìn)制,沒有前導(dǎo)0
- 二進(jìn)制:前導(dǎo)位0b或0B
- 八進(jìn)制:前導(dǎo)位0o或者0O
- 十六進(jìn)制:前導(dǎo)為0x或0X
特殊值NaN
字符串解析為數(shù)字出錯時返回NaN,但NaN的數(shù)據(jù)類型依然是number,typeof NaN返回”number“
NaN不等于任何值,包括它本身。
與數(shù)值有關(guān)的方法
parseInt(),把字符串轉(zhuǎn)為數(shù)值,結(jié)果只有兩種,十進(jìn)制的整數(shù)或NaN
parseFloat(),將一個字符串轉(zhuǎn)為浮點數(shù)
4.null 和undefined
相同之處:
null和undefined都表示無,if語句中都為false.
不同之處:
null 表示一個“空”對象,typeof null返回"object",轉(zhuǎn)為數(shù)字時為 0;
undefined 表示”此處無定義“的原始值,typeof undefined 返回"undefined",轉(zhuǎn)為數(shù)字時為NaN
null的用法,在調(diào)用函數(shù)時,某個參數(shù)未設(shè)置值,這是可以傳入null,表示參數(shù)為空.
5.對象
鍵值對的集合成為對象.
屬性的操作有兩種方法,使用點運算符或使用方括號。方括號里鍵名必須使用引號。
幾種方法:
Object.keys(obj)可以查看所有屬性
delete obj.p可以刪除某個屬性,刪除成功返回true
in 運算符可以檢查對象是否包含某個屬性
for...in用來遍歷所有屬性