Javascript有7種數(shù)據(jù)類型蚊俺,分別為number
string
boolean
symbol
null
undefined
以及object
损晤。
數(shù)值(
number
):整數(shù)和小數(shù)(比如1和3.14)
字符串(string
):文本(比如Hello World)。
布爾值(boolean
):表示真?zhèn)蔚膬蓚€(gè)特殊值,即true(真)和false(假)
undefined
:表示“未定義”或不存在,即由于目前沒有定義,所以此處暫時(shí)沒有任何值
null
:表示空值禾锤,即此處的值為空。
對(duì)象(object
):各種值組成的集合摹察。
結(jié)下來分別具體介紹一下這7種數(shù)據(jù)類型
number(數(shù)值)
Js里的數(shù)值分別有
十進(jìn)制
恩掷,二進(jìn)制
,八進(jìn)制
和十六進(jìn)制
-
數(shù)值的表示
十進(jìn)制 | 二進(jìn)制 | 八進(jìn)制 | 十六進(jìn)制 |
---|---|---|---|
1 | 0b1 | 0o123 | 0x1BC1 |
1.1 | 0B1 | 0O123 | 0X1BC1 |
.1 | |||
1.23e2(科學(xué)) |
-
特點(diǎn)
*十進(jìn)制:
沒有前導(dǎo)0
的數(shù)值供嚎。
*八進(jìn)制:有前綴0o
或0O的數(shù)值
黄娘,或者有前導(dǎo)0峭状、且只用到0-7的八個(gè)阿拉伯?dāng)?shù)字的數(shù)值。
*十六進(jìn)制:有前綴0x
或0X
的數(shù)值逼争。
*二進(jìn)制:有前綴0b或0B的數(shù)值优床。
默認(rèn)情況下,JavaScript 內(nèi)部會(huì)自動(dòng)將八進(jìn)制誓焦、十六進(jìn)制胆敞、二進(jìn)制轉(zhuǎn)為十進(jìn)制。
string(字符串)
-
字符串的表示
單引號(hào):'你好'
雙引號(hào):"你好"
空字符串:''&""
空格字符串:' '&" "
-
轉(zhuǎn)義符
為了讓瀏覽器理解我們需要輸入到頁面中的一些特殊符號(hào)是文本杂伟,而不是命令移层,所以要在是文本的特殊符號(hào)前加上"\
"
比如
var a = '\n' //會(huì)車(行)
var b = '\t' //tab(制表符)
var c = '\\' // "\" 符號(hào)
-
多行字符串
多行字符串推薦用下面這種方式
使用字符串拼接可以增加代碼的易讀性
var s = '123' + '456'
在ES6里可以用反引號(hào) " ` "開頭寫多行字符串,反引號(hào)為數(shù)字鍵1左邊的鍵
var s = `123
456`
boolean(布爾)
boolean是一個(gè)數(shù)學(xué)家赫粥,發(fā)明了邏輯學(xué)
故事:下雨 上課 沒帶傘 的了肺病 死了
布爾有兩個(gè)值:true(真)
false(假)
-
與運(yùn)算 和 或運(yùn)算
與運(yùn)算
a && b
的真值表
a\b | 真 | 假 |
---|---|---|
真 | ? | ? |
假 | ? | ? |
或運(yùn)算
a || b
的真值表
a\b | 真 | 假 |
---|---|---|
真 | ? | ? |
假 | ? | ? |
null和undefined
一般來說观话,null
表示空對(duì)象
undefined
表示空非對(duì)象
-
區(qū)別:
1.變量沒有賦值:undefined
2.有一個(gè)對(duì)象(object),現(xiàn)在不想賦值越平,給它null
(推薦)
有一個(gè)非對(duì)象匪燕,不想給他賦值,給他undefined
(推薦)
object(對(duì)象)
前六種類型叫基本類型(簡(jiǎn)單類型)
object
叫復(fù)雜類型喧笔,由簡(jiǎn)單類型組成
-
對(duì)象的表示
比如下面就是一個(gè)對(duì)象
{
'key' : value
'name' : 'jiujizi',
'age' : 20,
'gonder' : 'male'
}
以'key':value
這種格式儲(chǔ)存值,除前六種基礎(chǔ)類型外的類型都是變量龟再。
值得一提的是书闸,key
最好加上單引號(hào),這樣功能是最強(qiáng)大的
(key如果不加單引號(hào)利凑,就必須依照標(biāo)示符的命名規(guī)則)
還有對(duì)象里還能有對(duì)象浆劲,具體操作方式以后再說
-
對(duì)象的引用
porson = { //對(duì)象賦值給變量porson
'key' : value
'name' : 'jiujizi',
'age' : 20,
'gonder' : 'male'
}
porson['name'] //jiujizi
porson.name //這個(gè)也可以,不過是特例
上面就是對(duì)象的引用方式哀澈,記住單引號(hào)不能少
-
對(duì)象的注意點(diǎn)
var person = {'name':jiujizi}
delete person['name'] // 刪除person中的'name'這個(gè)key
person.name //undefined(無value)牌借,因?yàn)閐elete操作符將key和value都刪了
delete
操作符能將對(duì)象的key
和value
都刪了,與單純的賦值成undefined
不同
var person = {name:'jiujizi'}
person.name = undefined
'name' in person // true
對(duì)象內(nèi)部的值就算被賦值為undefined
割按,用in
操作符來檢驗(yàn)膨报,它也依然是存在于該對(duì)象中的,并沒有消失
一些操作符
-
delete
var person = {'name':jiujizi}
delete person['name'] // 刪除person中的'name'這個(gè)key
person.name //undefined(無value)适荣,因?yàn)閐elete操作符將key和value都刪了
用于刪除對(duì)象對(duì)應(yīng)的key值
现柠,把key刪了,value自然也就沒了
-
in
var person = {name:'jiujizi'}
person.name = undefined // 給name這個(gè)key賦值為'undefined'
'name' in person // true弛矛,用in操作符來檢驗(yàn)key是否存在于對(duì)象中
用于檢測(cè)一個(gè)key是否存在于一個(gè)對(duì)象中
-
for...in...
var person = {name:'jiujizi',age:20}
for(var key in person){
console.log(key) // 打印出person對(duì)象中的所有key
} // 但打印的順序是不確定的
用for...in...
可以用來遍歷對(duì)象够吩,但輸出但值順序卻是不一定的
-
typeof
typeof 1 // 'number'
typeof 'aaa' // 'string'
typeof symbol // 'symbol'
typeof true // 'boolean'
typeof null // 'object'
typeof undefined // 'undefined'
var a = {}
typeof a // 'object'
用typeof()
可以打印出數(shù)據(jù)類型
打印出來的值都用單引號(hào)(雙引號(hào))包住,表示一個(gè)名詞
這里有兩個(gè)BUG
typeof null // 'object'
var fn = function(){}
typeof fn // 'function'
- null的數(shù)據(jù)類型應(yīng)該是null丈氓,打印出來的卻是
object
- 數(shù)據(jù)類型
function
并不存在周循,但仍然可以打印出來强法,看來的確是一等公民了hhh