一、JS的相關(guān)歷史簡(jiǎn)要
? ? ? ?1991年? ?李爵士創(chuàng)建了萬(wàn)維網(wǎng)
? ? ? ?1992年? ?CSS誕生
? ? ? ?1993年? ?W3C誕生
? ? ? ?1994年底-1995年? ?Netscape創(chuàng)建了名為Navigator瀏覽器,并且與Sun公司合作,使其瀏覽器支持嵌入Java小程序,但并不使用Java作為腳本語(yǔ)言,而是聘請(qǐng)了程序員Brendan Eich寫(xiě)出一種類似Java的語(yǔ)言(只用了10天)--JavaScript
? ? ? ?后來(lái),unicode發(fā)布。這說(shuō)明了重要的一點(diǎn):JavaScript并不完全支持UTF-8
? ? ? ?1996年? ?微軟公司仿照J(rèn)avaScript開(kāi)發(fā)一種新語(yǔ)言名為JScript將其內(nèi)置于IE3瀏覽器。Netscape公司面臨喪失瀏覽器腳本語(yǔ)言的主導(dǎo)權(quán),于是Netscape將JavaScript 提交給國(guó)際標(biāo)準(zhǔn)化組織 ECMA(European Computer Manufacturers Association)希望其能與微軟抗衡,在1998年開(kāi)源了瀏覽器,導(dǎo)致Mozilla項(xiàng)目的誕生。
? ? ? 1997年? ?ECMA組織發(fā)布了第一版標(biāo)準(zhǔn)名為ECMAScript 1.0。一方面是JavaScript已經(jīng)被Netscape公司注冊(cè)使用,另一方面想體現(xiàn)這一標(biāo)準(zhǔn)是由ECMA制定。
? ? ? 1999年? ?IE 5部署了 XMLHttpRequest 接口,允許 JavaScript 發(fā)出 HTTP 請(qǐng)求,為后來(lái)大行其道的 Ajax 應(yīng)用創(chuàng)造了條件。同年12月,ECMAScript 3.0發(fā)布,成為 JavaScript 的通行標(biāo)準(zhǔn)。此時(shí)JavaScript的缺點(diǎn):沒(méi)有模塊化、內(nèi)置代碼少。
? ? ? 2001年-2003年? ?微軟、Mozilla項(xiàng)目、蘋果分別推出瀏覽器IE6、Firefox、Safari
? ? ? 2004年? ?Google 公司發(fā)布了 Gmail,促成了互聯(lián)網(wǎng)應(yīng)用程序。JavaScript開(kāi)始被認(rèn)為是一種編程語(yǔ)言。
? ? ? 2006年? ?IE7發(fā)布
? ? ? 2009年? ?ECMAScript 5.0發(fā)布。但功能改善太少,于是Rails社區(qū)發(fā)布了 CoffeeScript 的最初版本。CoffeeScript 可以被轉(zhuǎn)換為 JavaScript 運(yùn)行,但是語(yǔ)法比 JavaScript 簡(jiǎn)潔。這開(kāi)啟了其他語(yǔ)言轉(zhuǎn)為 JavaScript 的風(fēng)潮。
? ? ?2011年? ?微軟發(fā)布IE8瀏覽器
? ? ?2015年? ?ECMAScript 6.0發(fā)布。JavaScript開(kāi)始成為現(xiàn)代編程語(yǔ)言。后面開(kāi)始JavaScript每年一更。
? ? ?值得注意的是,以上可以看出IE8不支持ECMAScript 6.0
二、JavaScript里的數(shù)據(jù)類型
? JavaScript有以下七種數(shù)據(jù)類型:數(shù)值number、字符串string、布爾值boolean、符號(hào)symbol(ECMAScript 6引入)、null、undefined、對(duì)象object。前六種稱為基本類型,最后一種稱為復(fù)雜類型。下面簡(jiǎn)單介紹一下:
? ? 1.number
? ? ? 十進(jìn)制:1、.1(即0.1)、1.23e2(即1.23*10^2)
? ? ? 二進(jìn)制:0b11
? ? ? 八進(jìn)制:011(由0開(kāi)頭,或者0o開(kāi)頭。通常來(lái)說(shuō),有前導(dǎo)0的數(shù)值會(huì)被視為八進(jìn)制,但是如果前導(dǎo)0后面有數(shù)字8和9,則該數(shù)值被視為十進(jìn)制,所以八進(jìn)制容易出bug)
? ? ? 十六進(jìn)制:0x11
? ? ?2.string
例子:’你好‘、''或者""、' '(注意中間有空格,如圖一)、'\''(注意中間的‘是內(nèi)容,\是轉(zhuǎn)義符。若不加\瀏覽器會(huì)報(bào)錯(cuò),如圖二)、'\n'(表示空格)、'\\'(表示\)


? ? ?3.boolean
? ? ? ?與&&(參考圖三)

? ? ? ? 或||(參考圖四)

? ??4.symbol(ES6新引入)
? ??5.null(表示空對(duì)象)
? ??6.undefined(表示非空對(duì)象)
? ? 7.object
? ? ? ? 由例子 (圖五)可以看出以下幾點(diǎn):
? ? ? ? (1)object由各種基本類型組成,并且object里可以有object;
? ? ? ? (2)key-value之間可以用逗號(hào)隔開(kāi),但只是ECMAScript 5之后才支持,由歷史可以看出IE7及其以下版本不支持;

? ? ? ? ? 另外需要注意的地方:
? ? ? ? (1)key可以是空字符串(如圖六)

? ? ? ? ?(2)key必須符合標(biāo)識(shí)符規(guī)則:
????????????????第一個(gè)字符可以是任意 Unicode 字母(包括英文字母和其他語(yǔ)言的字母),以及美元符號(hào)($)和下劃線(_);
????????????????第二個(gè)字符及后面的字符除了 Unicode 字母、美元符號(hào)和下劃線,還可以用數(shù)字0-9;
? ? ? ? ? ? ? ? 中文是合法的標(biāo)識(shí)符;
? ? ? ? ? ? ? ? 不符合標(biāo)識(shí)符規(guī)則的則需要用引號(hào)引起來(lái)
? ? ? ? ? (3)讀取的方法有兩種,用圖五的例子:方法一:person.name;方法二:person['name'](這一種方法要注意的是key必須要用''引起來(lái),因?yàn)槿绻@個(gè)key在別處有聲明則會(huì)導(dǎo)致瀏覽器誤解)
? ? ? ? ? (4)刪除key的方法:
? ? ? ? ? ? ? ? ? ? delete person['name'](如圖七)

? ? ? ? ? ? ? ? 注意:要區(qū)別于寫(xiě):person.name = undefined。該語(yǔ)句只會(huì)把name的值清空,但不會(huì)刪除了這個(gè)key,如圖八)

? ? ? ? ? ? ?(5)遍歷key,拿圖八的例子:

? ? ? ? ? ? ? (6)遍歷value:

三、看變量的類型(typeof)
????記住以下兩點(diǎn):
????1.null的typeof返回object,其余類型返回其對(duì)應(yīng)的類型值

????2.function的typeof返回function,但function其實(shí)屬于object,七種數(shù)據(jù)類型并無(wú)function
