JS目前共有7種數(shù)據(jù)類型驰唬,其中6種為簡單類型(number,string腔彰,boolean叫编,null,undefined霹抛,symbol)搓逾,一種為復(fù)雜類型(object)。
1.Number類型
1.1 數(shù)字包含整數(shù)以及小數(shù)杯拐。所有數(shù)字都是由64位浮點(diǎn)數(shù)存儲(chǔ)的霞篡。
類似1和1.0是相等的
1===1.0
true
但是涉及到小數(shù)的運(yùn)算需要格外小心,是有微小誤差的
0.3/0.1=3
VM65:1 Uncaught ReferenceError: Invalid left-hand side in assignment
0.3/0.1
2.9999999999999996
1.2 數(shù)值的進(jìn)制
使用字面量表示數(shù)值時(shí)端逼,js對(duì)整數(shù)提供4種進(jìn)制表示方法:
2進(jìn)制//前綴為0b或者0B
8進(jìn)制//前綴為0或者0o或者00朗兵,且只用1~7的阿拉伯?dāng)?shù)值表示
10進(jìn)制//沒有前導(dǎo)0的數(shù)值
16進(jìn)制//有前綴0x或者0X
1.3 NaN
NaN是JS的特殊值,表示非數(shù)字(Not a Number)
但NaN本身是屬于數(shù)值的
typeof NaN
"number"
NaN不等于自身和任何數(shù)值顶滩;NaN在boolean運(yùn)算時(shí)為false余掖;NaN與NaN的運(yùn)算都是false;
isNaN()方法用以判斷一個(gè)值是否為NaN
1.4.1 parseInt()方法
parseInt()方法用于將字符串轉(zhuǎn)化為整數(shù)礁鲁。
同時(shí)也可以輸入兩個(gè)參數(shù)盐欺,第二個(gè)參數(shù)輸入2-32的阿拉伯整數(shù)赁豆,將第一個(gè)參數(shù)轉(zhuǎn)化為相應(yīng)進(jìn)制的數(shù)值。第二個(gè)參數(shù)輸入超出限定的數(shù)值后找田,輸出結(jié)果會(huì)表示為NaN(0歌憨,null,undefined作為參數(shù)則直接被忽略)
2.String
2.1定義
字符串是0個(gè)或者多個(gè)排列在一起的字符墩衙,放在單引號(hào)和雙引號(hào)內(nèi)务嫡。
字符串默認(rèn)只能寫在一行,否則會(huì)報(bào)錯(cuò)
'a
b
c'
//VM106:1 Uncaught SyntaxError: Invalid or unexpected token
如果強(qiáng)迫癥必須要寫成三行沒可以在末尾添加反斜杠
'a\
b\
c'
//"abc"
或者使用'`'符號(hào)包裹漆改,就是鍵盤上數(shù)字1鍵位左邊那個(gè)
`a
b
c`
//
"a
b
c"
2.2轉(zhuǎn)義符
反斜杠(\)在字符串內(nèi)有特殊含義心铃,用來表示一些特殊字符,所以又稱為轉(zhuǎn)義符挫剑。
常用的需要反斜杠來轉(zhuǎn)義的特殊字符:
\0:null
\n:換行符
\r:回車鍵
\t:制表符
':單引號(hào)
":雙引號(hào)
\:反斜杠
2.3 字符串與數(shù)組去扣;Length屬性
字符串可以被視為一個(gè)數(shù)組,可以用方括號(hào)運(yùn)算符屬性查看相應(yīng)位置的字符樊破;也可以用length屬性查看長度愉棱。但其相似度僅僅如此,無法如同數(shù)組一樣對(duì)其屬性進(jìn)行變更
('naruto')[0]
//"n"
('naruto').length
//6
3 Null和Undefined
null和undefined都表示‘無’哲戚。
一般用null來表示空對(duì)象奔滑;undefined表示空非對(duì)象類型。
4 Boolean類型
布爾值分為true和false,常用于邏輯運(yùn)算顺少。
以下運(yùn)算符會(huì)返回布爾值
前置邏輯運(yùn)算符:!(表示not)
相等運(yùn)算符:===朋其,!==,==脆炎,!=
比較運(yùn)算符:>梅猿,>=,<秒裕,<=
在邏輯運(yùn)算中袱蚓,null,undefined几蜻,NaN癞松,0,false入蛆,''(空字符串)响蓉,直接轉(zhuǎn)換為false.
空數(shù)組和空對(duì)象對(duì)應(yīng)的布爾值都是true.
5 symbol類型
symbol類型是ES6新引進(jìn)的一中數(shù)據(jù)類型,表示獨(dú)一無二的值哨毁。
var a=Symbol();
var b =Symbol();
a===b;
false
6 Object
6.1
object是JS語言的核心枫甲,是最重要的數(shù)據(jù)類型。
可以用var a={};來創(chuàng)建對(duì)象
這是一個(gè)空數(shù)組想幻,鍵名(屬性名粱栖;key)和值可以在創(chuàng)建時(shí)添加,也可以在隨后動(dòng)態(tài)地添加脏毯。需要注意闹究,其命名規(guī)則需要和標(biāo)識(shí)符一致,不然需要加上引號(hào)食店,否則會(huì)報(bào)錯(cuò)渣淤。
6.2可以使用delete 刪除屬性
var yyy={a:b}
delete yyy.a;//true
yyy//{}
6.3 使用in運(yùn)算來查看屬性是否存在
var yyy={a:b}
'a' in yyy//true
6.4 遍歷屬性
使用for in 循環(huán)來遍歷一個(gè)對(duì)象的所有屬性
var yyy={a:1,b:2,c:3}
for(var i in yyy){console.log('鍵名:'+i+','+'鍵值:'+yyy[i]);}
VM654:1 鍵名:a,鍵值:1
VM654:1 鍵名:b,鍵值:2
VM654:1 鍵名:c,鍵值:3
更新2018/9/23
1. String轉(zhuǎn)換為Number
1.1 Number()
1.2 parseInt()或者parseFloat
1.3 'string' - 0 //通過減零來實(shí)現(xiàn),老司機(jī)技能
1.4 +'string' //通過取正來實(shí)現(xiàn)
2. 轉(zhuǎn)換為String
2.1 .toString()方法實(shí)現(xiàn)
2.2 xxx+'' //值加空字符串吉嫩,任意一邊有字符串价认,js就會(huì)嘗試把另一邊也轉(zhuǎn)化為字符串,老司機(jī)技能
3. 邏輯運(yùn)算自娩,求false和true
3.1 Boolean()
3.2 !! //求反用踩,老司機(jī)技能
需要注意5個(gè)falsy值(undefined,null忙迁,NaN脐彩,0,'')姊扔,這五個(gè)中最后一個(gè)為空字符串惠奸。