# 初識(shí) Javascript

JavaScript的發(fā)展歷史

JavaScript因?yàn)榛ヂ?lián)網(wǎng)而生,緊隨著瀏覽器的出現(xiàn)而問世意敛。
1994年12月吗货,Navigator瀏覽器發(fā)布了1.0版,市場(chǎng)份額一舉超過90%京郑。Netscape公司很快發(fā)現(xiàn),Navigator瀏覽器需要一種可以嵌入網(wǎng)頁(yè)的腳本語(yǔ)言葫掉,用來(lái)控制瀏覽器行為些举。管理層對(duì)這種瀏覽器腳本語(yǔ)言的設(shè)想是:功能不需要太強(qiáng),語(yǔ)法較為簡(jiǎn)單俭厚,容易學(xué)習(xí)和部署户魏。那一年,正逢Sun公司的Java語(yǔ)言問世挪挤,市場(chǎng)推廣活動(dòng)非常成功叼丑。Netscape公司決定與Sun公司合作,瀏覽器支持嵌入Java小程序(后來(lái)稱為Java applet)扛门。
1995年鸠信,Netscape公司雇傭了程序員Brendan Eich開發(fā)這種網(wǎng)頁(yè)腳本語(yǔ)言。Brendan Eich有很強(qiáng)的函數(shù)式編程背景尖飞,希望以Scheme語(yǔ)言(函數(shù)式語(yǔ)言鼻祖LISP語(yǔ)言的一種方言)為藍(lán)本症副,實(shí)現(xiàn)這種新語(yǔ)言。1995年5月政基,Brendan Eich只用了10天贞铣,就設(shè)計(jì)完成了這種語(yǔ)言的第一版。
Netscape公司的這種瀏覽器腳本語(yǔ)言沮明,最初名字叫做Mocha辕坝,1995年9月改為L(zhǎng)iveScript。12月荐健,Netscape公司與Sun公司(Java語(yǔ)言的發(fā)明者和所有者)達(dá)成協(xié)議酱畅,后者允許將這種語(yǔ)言叫做JavaScript。這樣一來(lái)江场,Netscape公司可以借助Java語(yǔ)言的聲勢(shì)纺酸,而Sun公司則將自己的影響力擴(kuò)展到了瀏覽器。
1995年12月4日址否,Netscape公司與Sun公司聯(lián)合發(fā)布了JavaScript語(yǔ)言餐蔬。
1996年3月,Navigator 2.0瀏覽器正式內(nèi)置了JavaScript腳本語(yǔ)言佑附。
1996年11月樊诺,Netscape公司決定將JavaScript提交給國(guó)際標(biāo)準(zhǔn)化組織ECMA(European Computer Manufacturers Association),希望JavaScript能夠成為國(guó)際標(biāo)準(zhǔn)音同,以此抵抗微軟词爬。
1997年7月,ECMA組織發(fā)布262號(hào)標(biāo)準(zhǔn)文件(ECMA-262)的第一版权均,規(guī)定了瀏覽器腳本語(yǔ)言的標(biāo)準(zhǔn)顿膨,并將這種語(yǔ)言稱為ECMAScript。這個(gè)版本就是ECMAScript 1.0版叽赊。 ECMAScript和JavaScript的關(guān)系是虽惭,前者是后者的規(guī)格,后者是前者的一種實(shí)現(xiàn)蛇尚。
1997年7月芽唇,ECMAScript 1.0發(fā)布。
1998年6月取劫,ECMAScript 2.0版發(fā)布匆笤。
1999年12月,ECMAScript 3.0版發(fā)布谱邪,成為JavaScript的通行標(biāo)準(zhǔn)炮捧,得到了廣泛支持。
2007年10月惦银,ECMAScript 4.0版草案發(fā)布咆课,對(duì)3.0版做了大幅升級(jí)末誓,預(yù)計(jì)次年8月發(fā)布正式版本。
2009年12月书蚪,ECMAScript 5.0版正式發(fā)布喇澡。
2011年6月,ECMAscript 5.1版發(fā)布殊校,并且成為ISO國(guó)際標(biāo)準(zhǔn)(ISO/IEC 16262:2011)晴玖。
2015年6月,ECMAScript 6正式發(fā)布为流,并且更名為“ECMAScript 2015”呕屎。


TIPS: JavaScript與Java的關(guān)系
JavaScript和Java是兩種不一樣的語(yǔ)言,但是它們之間存在聯(lián)系敬察。
JavaScript的基本語(yǔ)法和對(duì)象體系秀睛,是模仿Java而設(shè)計(jì)的。但是莲祸,JavaScript沒有采用Java的靜態(tài)類型琅催。正是因?yàn)镴avaScript與Java有很大的相似性,所以這門語(yǔ)言才從一開始的LiveScript改名為JavaScript虫给√俾眨基本上,JavaScript這個(gè)名字的原意是“很像Java的腳本語(yǔ)言”抹估。
在JavaScript語(yǔ)言中缠黍,函數(shù)是一種獨(dú)立的數(shù)據(jù)類型,以及采用基于原型對(duì)象(prototype)的繼承鏈药蜻。這是它與Java語(yǔ)法最大的兩點(diǎn)區(qū)別瓷式。JavaScript語(yǔ)法要比Java自由得多。
另外语泽,Java語(yǔ)言需要編譯贸典,而JavaScript語(yǔ)言則是運(yùn)行時(shí)由解釋器直接執(zhí)行。
總之踱卵,JavaScript的原始設(shè)計(jì)目標(biāo)是一種小型的廊驼、簡(jiǎn)單的動(dòng)態(tài)語(yǔ)言莲趣,與Java有足夠的相似性聂渊,使得使用者(尤其是Java程序員)可以快速上手。


瀏覽器的渲染機(jī)制

  1. 解析HTML仇让,構(gòu)建DOM樹
  2. 解析CSS西饵,構(gòu)建CSSOM
  3. 將DOM與CSSOM組成渲染樹
  4. 根據(jù)渲染樹計(jì)算頁(yè)面布局及節(jié)點(diǎn)的幾何結(jié)構(gòu)
  5. 把所有節(jié)點(diǎn)繪制在屏幕上

樣式酝掩、JS 在 HTML 中如何放置?

樣式置于HTML<head>里面用link引入
JS置于<body>標(biāo)簽內(nèi),放在所有HTML元素之后(因?yàn)槟_本會(huì)阻塞后面內(nèi)容的呈現(xiàn)和阻塞其后組件的下載)


解釋白屏和 FOUC

白屏和FOUC(Flash of Unstyled Content 無(wú)樣式內(nèi)容閃爍)的出現(xiàn)是由于不同瀏覽器對(duì)HTML和CSS處理不同造成的眷柔,部分瀏覽器先將HTML和CSS加載完畢期虾,再對(duì)頁(yè)面進(jìn)行渲染原朝,而在瀏覽器加載HTML和CSS的時(shí)間內(nèi)并沒有內(nèi)容顯示,這就造成了白屏問題镶苞;FOUC(無(wú)樣式內(nèi)容閃爍)喳坠,是由于部分瀏覽器先對(duì)HTML展示,等待CSS加載完成之后在對(duì)樣式進(jìn)行修改宾尚,因此導(dǎo)致FOUC。


介紹下 repaint和 reflow的概念(可選)

reflow:瀏覽器根據(jù)各種樣式(瀏覽器默認(rèn)谢澈、開發(fā)人員定義等)計(jì)算各個(gè)元素的盒模型所應(yīng)在的位置煌贴,并根據(jù)計(jì)算結(jié)果將元素置于其應(yīng)在的位置的過程;
repaint:各元素的屬性全部確定下來(lái)之后锥忿,瀏覽器按照這些元素的特性將其繪制出來(lái)的過程牛郑。


如何異步加載腳本

使用defer或async
使用 async使加載和渲染后續(xù)文檔元素的過程將和js腳本的加載與執(zhí)行并行進(jìn)行;
使用defer使加載后續(xù)文檔元素的過程將和js腳本的加載并行進(jìn)行敬鬓,但js腳本的執(zhí)行要在所有元素解析完成之后淹朋,DOMContentLoaded 事件觸發(fā)之前完成。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末钉答,一起剝皮案震驚了整個(gè)濱河市础芍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌数尿,老刑警劉巖仑性,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異右蹦,居然都是意外死亡诊杆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門何陆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)晨汹,“玉大人,你說我怎么就攤上這事贷盲√哉猓” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵巩剖,是天一觀的道長(zhǎng)慨灭。 經(jīng)常有香客問我,道長(zhǎng)球及,這世上最難降的妖魔是什么氧骤? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮吃引,結(jié)果婚禮上筹陵,老公的妹妹穿的比我還像新娘刽锤。我一直安慰自己,他們只是感情好朦佩,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布并思。 她就那樣靜靜地躺著,像睡著了一般语稠。 火紅的嫁衣襯著肌膚如雪宋彼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天仙畦,我揣著相機(jī)與錄音输涕,去河邊找鬼。 笑死慨畸,一個(gè)胖子當(dāng)著我的面吹牛莱坎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播寸士,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼檐什,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了弱卡?” 一聲冷哼從身側(cè)響起乃正,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎婶博,沒想到半個(gè)月后烫葬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凡蜻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年搭综,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片划栓。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡兑巾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出忠荞,到底是詐尸還是另有隱情蒋歌,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布委煤,位于F島的核電站堂油,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏碧绞。R本人自食惡果不足惜府框,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望讥邻。 院中可真熱鬧迫靖,春花似錦院峡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至盹牧,卻和暖如春俩垃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背汰寓。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工口柳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人踩寇。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓啄清,卻偏偏與公主長(zhǎng)得像六水,于是被迫代替她去往敵國(guó)和親俺孙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容