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 總是認為它們是兩個字符(length屬性為2)
1.Base64 是一種編碼方法芋簿,可以將任意值轉(zhuǎn)成 0~9、A~Z蟀苛、a-z益咬、+和/這64個字符組成的可打印字符,有時需要以文本格式傳遞二進制數(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 預期某個位置應該是布爾值箍邮,會將該位置上現(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表示負數(shù)
第2位到12位(共11)味滞,表示指數(shù)部分
第13為到64位(共52)樱蛤,表示小數(shù)部分
絕對值小于2的53次方的整數(shù)都可以精確表示
如果一個數(shù)大于等于2的1024次方钮呀,那么就會發(fā)生“正向溢出”,
如果一個數(shù)小于等于2的-1075次方(指數(shù)部分最小值-1023昨凡,再加上小數(shù)部分的52位)爽醋,那么就會發(fā)生為“負向溢出”
數(shù)值的進制:
- 十進制:默認都為十進制,沒有前導0
- 二進制:前導位0b或0B
- 八進制:前導位0o或者0O
- 十六進制:前導為0x或0X
特殊值NaN
字符串解析為數(shù)字出錯時返回NaN便脊,但NaN的數(shù)據(jù)類型依然是number蚂四,typeof NaN返回”number“
NaN不等于任何值,包括它本身哪痰。
與數(shù)值有關(guān)的方法
parseInt(),把字符串轉(zhuǎn)為數(shù)值遂赠,結(jié)果只有兩種,十進制的整數(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ù)未設置值青伤,這是可以傳入null,表示參數(shù)為空.
5.對象
鍵值對的集合成為對象.
屬性的操作有兩種方法异希,使用點運算符或使用方括號。方括號里鍵名必須使用引號绒瘦。
幾種方法:
Object.keys(obj)可以查看所有屬性
delete obj.p可以刪除某個屬性称簿,刪除成功返回true
in 運算符可以檢查對象是否包含某個屬性
for...in用來遍歷所有屬性