1數(shù)據(jù)類型
七種數(shù)據(jù)類型:1.數(shù)字.number 2.字符串.string 3.布爾.Boolean 4.symbol 5.null 6.undefined 7.對(duì)象.object 。 前六種為基本類型也叫簡(jiǎn)單類型彬坏,對(duì)象為復(fù)雜類型单雾,由基本類型組成杏死。
數(shù)字.number
JS對(duì)整數(shù)提供四種進(jìn)制的表示方式:
十進(jìn)制:沒(méi)有前導(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ù)值-
字符串.string
單引號(hào)內(nèi)部想要用單引號(hào)印叁,必須在前面加上\反斜杠表示轉(zhuǎn)義:'''被冒。字符串默認(rèn)只能寫(xiě)在一行內(nèi)军掂,分成多行會(huì)報(bào)錯(cuò)
字符串就是零個(gè)或者多個(gè)排在一塊的字符,放在單引號(hào)或者雙引號(hào)中。單引號(hào)的內(nèi)部可以放雙引號(hào)呈野,雙引號(hào)內(nèi)部可以放單引號(hào)。
如果長(zhǎng)字符串必須分成多行,可以在每一行的尾部使用反斜杠昨悼,但是注意蝗锥,反斜杠的后面必須是換行符,而不能有其他字符(比如空格)率触,否則會(huì)報(bào)錯(cuò)终议。所以建議用連接運(yùn)算符(+),輸出的時(shí)候也是單行
這里講一下轉(zhuǎn)義葱蝗。 反斜杠(\)被稱為轉(zhuǎn)義符穴张,需要用反斜杠轉(zhuǎn)義的特殊字符,主要有以下這些:\0 :null(\u0000)
\b :后退鍵(\u0008)
\f :換頁(yè)符(\u000C)
\n :換行符(\u000A)
\r :回車(chē)鍵(\u000D)
\t :制表符(\u0009)
\v :垂直制表符(\u000B)
' :?jiǎn)我?hào)(\u0027)
" :雙引號(hào)(\u0022)
\ :反斜杠(\u005C)
3.1 布爾.boolean
布爾只有兩個(gè)值:true和false垒玲。
以下幾種運(yùn)算符會(huì)返回布爾值:
前置邏輯運(yùn)算符: ! (Not)
相等運(yùn)算符:===陆馁,!==找颓,==合愈,!=
比較運(yùn)算符:>,>=击狮,<佛析,<=
3.2 null和undefined
他們都表示沒(méi)有,含義非常近似彪蓬。這是JavaScript 的設(shè)計(jì)者 Brendan Eich設(shè)計(jì)的“bug”寸莫。他們
的區(qū)別在于:
1:有一個(gè)對(duì)象,但是現(xiàn)在不想賦值档冬,那就先給一個(gè)null(var object = null)
2:有一個(gè)非對(duì)象膘茎,現(xiàn)在不想賦值,給一個(gè)undefined酷誓,但是不需要和null一樣寫(xiě)披坏,比如
var a 后面不用接,他顯示的值自然是undefined盐数。
null表示的就是一個(gè)空的對(duì)象棒拂。
-
對(duì)象.object
對(duì)象(object)是 JavaScript 語(yǔ)言的核心概念,也是最重要的數(shù)據(jù)類型玫氢。
對(duì)象就是一組“鍵值對(duì)”(key-value)的集合帚屉,是一種無(wú)序的復(fù)合數(shù)據(jù)集合。
上面代碼中漾峡,大括號(hào)就定義了一個(gè)對(duì)象攻旦,它被賦值給變量obj,所以變量obj就指向一個(gè)對(duì)象生逸。
但是不加引號(hào)的時(shí)候必須符合標(biāo)識(shí)符規(guī)則康铭,否則會(huì)報(bào)錯(cuò)。
該對(duì)象內(nèi)部包含兩個(gè)鍵值對(duì)(又稱為兩個(gè)“成員”)牢屋,第一個(gè)鍵值對(duì)是foo: 'Hello'掰邢,其中foo
是“鍵名”(成員的名稱),字符串Hello是“鍵值”(成員的值)伟阔。鍵名與鍵值之間用冒號(hào)分隔辣之。
第二個(gè)鍵值對(duì)是bar: 'World',bar是鍵名皱炉,World是鍵值怀估。兩個(gè)鍵值對(duì)之間用逗號(hào)分隔。
4.1 鍵名
對(duì)象的所有鍵名都是字符串合搅。鍵名如果是數(shù)字多搀,會(huì)自動(dòng)轉(zhuǎn)換成字符串,鍵名可以不加引號(hào)灾部,
4.2 屬性的讀取
讀取的方法有兩種赌髓,一種是使用點(diǎn)運(yùn)算符从藤,還有一種是使用方括號(hào)運(yùn)算符。
使用點(diǎn)運(yùn)算符時(shí)锁蠕,必須符合標(biāo)識(shí)符規(guī)范夷野。請(qǐng)注意,如果使用方括號(hào)運(yùn)算符荣倾,鍵名必須放在引
號(hào)里面悯搔,否則會(huì)被當(dāng)作變量處理。
上面代碼中舌仍,引用對(duì)象obj的foo屬性時(shí)妒貌,如果使用點(diǎn)運(yùn)算符,foo就是字符串铸豁;如果使用方括
號(hào)運(yùn)算符灌曙,但是不使用引號(hào),那么foo就是一個(gè)變量推姻,指向字符串bar平匈。
數(shù)值鍵名必須使用方括號(hào)運(yùn)算符,不然會(huì)被當(dāng)成小數(shù)點(diǎn)藏古。數(shù)值鍵名可以不加引號(hào)增炭,因?yàn)闀?huì)被
自動(dòng)轉(zhuǎn)換成字符串。
4.3 屬性的查看
查看一個(gè)對(duì)象本身的所有屬性拧晕,可以使用Object.keys方法隙姿。
4.4 查詢屬性是否存在
in運(yùn)算符。
但是in運(yùn)算符無(wú)法查詢厂捞,這個(gè)屬性是自身的還是繼承的输玷。上面代碼中队丝,對(duì)象obj本身并沒(méi)有toString屬性,但是in運(yùn)算符會(huì)返回true欲鹏,因?yàn)檫@個(gè)屬性是繼承的机久。可以使用對(duì)象的hasOwnProperty方法判斷一下赔嚎,是否為對(duì)象自身的屬性膘盖。
4.5 屬性的遍歷
for...in循環(huán)用來(lái)遍歷一個(gè)對(duì)象的全部屬性。
for...in循環(huán)有兩個(gè)使用注意點(diǎn):
·它遍歷的是對(duì)象所有可遍歷(enumerable)的屬性尤误,會(huì)跳過(guò)不可遍歷的屬性
·它不僅遍歷對(duì)象自身的屬性侠畔,還遍歷繼承的屬性(繼承的屬性是可遍歷的才行)
4.6 屬性的刪除
delete命令用于刪除對(duì)象的屬性,刪除成功后返回true损晤。
上面代碼中软棺,delete命令刪除對(duì)象obj的p屬性。刪除后尤勋,再讀取p屬性就會(huì)返回undefined喘落,而
且Object.keys方法的返回值也不再包括該屬性。
這里注意斥黑,var obj.p = undefined 這只是把鍵值 1給刪除了揖盘,鍵名還在眉厨。 查詢數(shù)據(jù)類型
typeof 是一個(gè)操作符锌奴,其右側(cè)跟一個(gè)一元表達(dá)式,并返回這個(gè)表達(dá)式的數(shù)據(jù)類型憾股。返回的結(jié)
果用該類型的字符串(全小寫(xiě)字母)形式表示鹿蜀,包括以下 7 種:number、boolean服球、symbol茴恰、
string、object斩熊、undefined往枣、function 等。
這里有兩個(gè)bug:
1.七種數(shù)據(jù)類型都會(huì)返回對(duì)應(yīng)的數(shù)據(jù)類型粉渠,只有null會(huì)返回'object'typeof fn 會(huì)返回'function'