初識JavaScript

簡單介紹 JavaScript的發(fā)展歷史

  • 1990年底屋确,歐洲核能研究組織(CERN)科學(xué)家Tim Berners-Lee贮勃,發(fā)明了萬維網(wǎng)(World Wide Web)忆矛,從此可以在網(wǎng)上瀏覽網(wǎng)頁文件舌剂。最早的網(wǎng)頁只能在操作系統(tǒng)的終端里瀏覽气破,也就是說只能使用命令行操作聊浅,網(wǎng)頁都是在字符窗口中顯示,非常不方便现使。
  • 1992年底低匙,美國國家超級電腦應(yīng)用中心(NCSA)開始開發(fā)一個獨立的瀏覽器,叫做Mosaic朴下。這是人類歷史上第一個瀏覽器努咐,從此網(wǎng)頁可以在圖形界面的窗口瀏覽。
  • 1994年10月殴胧,NCSA的一個主要程序員Marc Andreessen聯(lián)合風(fēng)險投資家Jim Clark渗稍,成立了Mosaic通信公司(Mosaic Communications)佩迟,不久后改名為Netscape。這家公司的方向竿屹,就是在Mosaic的基礎(chǔ)上报强,開發(fā)面向普通用戶的新一代的瀏覽器Netscape Navigator。
  • Netscape公司很快發(fā)現(xiàn)拱燃,Navigator瀏覽器需要一種可以嵌入網(wǎng)頁的腳本語言秉溉,用來控制瀏覽器行為。1995年碗誉,Netscape公司雇傭了程序員Brendan Eich開發(fā)這種網(wǎng)頁腳本語言召嘶。5月,Brendan Eich只用了10天哮缺,就設(shè)計完成了這種語言的第一版弄跌。它是一個大雜燴,語法有多個來源尝苇。
  • Netscape公司與Sun公司(Java語言的發(fā)明者和所有者)達成協(xié)議铛只,后者允許將這種語言叫做JavaScript。這樣一來糠溜,Netscape公司可以借助Java語言的聲勢淳玩,而Sun公司則將自己的影響力擴展到了瀏覽器。
  • 1996年3月非竿,Navigator 2.0瀏覽器正式內(nèi)置了JavaScript腳本語言蜕着。
  • 1996年8月,微軟模仿JavaScript開發(fā)了一種相近的語言汽馋,取名為JScript侮东。Netscape公司面臨喪失瀏覽器腳本語言的主導(dǎo)權(quán)的局面。
  • 1996年11月豹芯,Netscape公司決定將JavaScript提交給國際標準化組織ECMA,希望JavaScript能夠成為國際標準驱敲,以此抵抗微軟铁蹈。
  • 1997年7月,ECMA組織發(fā)布262號標準文件(ECMA-262)的第一版众眨,規(guī)定了瀏覽器腳本語言的標準握牧,并將這種語言稱為ECMAScript。ECMAScript和JavaScript的關(guān)系是娩梨,前者是后者的規(guī)格沿腰,后者是前者的一種實現(xiàn)。在日常場合狈定,這兩個詞是可以互換的颂龙。ECMAScript只用來標準化JavaScript這種語言的基本語法結(jié)構(gòu)习蓬,與部署環(huán)境相關(guān)的標準都由其他標準規(guī)定。
  • 1997年7月措嵌,ECMAScript 1.0發(fā)布躲叼。
  • 1998年6月,ECMAScript 2.0版發(fā)布企巢。
  • 1999年12月枫慷,ECMAScript 3.0版發(fā)布,成為JavaScript的通行標準浪规,得到了廣泛支持或听。
  • 2007年10月,ECMAScript 4.0版草案發(fā)布笋婿,對3.0版做了大幅升級神帅,預(yù)計次年8月發(fā)布正式版本。草案發(fā)布后萌抵,由于4.0版的目標過于激進找御,各方對于是否通過這個標準,發(fā)生了嚴重分歧绍填。2008年7月霎桅,由于對于下一個版本應(yīng)該包括哪些功能,各方分歧太大讨永,爭論過于激進滔驶,ECMA開會決定,中止ECMAScript 4.0的開發(fā)(即廢除了這個版本)卿闹,將其中涉及現(xiàn)有功能改善的一小部分揭糕,發(fā)布為ECMAScript 3.1,而將其他激進的設(shè)想擴大范圍锻霎,放入以后的版本著角。會后不久,ECMAScript 3.1就改名為ECMAScript 5旋恼。
  • 2009年12月吏口,ECMAScript 5.0版正式發(fā)布。
  • 2011年6月冰更,ECMAscript 5.1版發(fā)布产徊,并且成為ISO國際標準(ISO/IEC 16262:2011)。到了2012年底蜀细,所有主要瀏覽器都支持ECMAScript 5.1版的全部功能舟铜。
  • 2013年3月,ECMAScript 6草案凍結(jié)奠衔,不再添加新功能谆刨。新的功能設(shè)想將被放到ECMAScript 7塘娶。
  • 2013年12月,ECMAScript 6草案發(fā)布痴荐。然后是12個月的討論期血柳,聽取各方反饋。
  • 2015年6月生兆,ECMAScript 6正式發(fā)布难捌,并且更名為“ECMAScript 2015”。下一個版本在2016年發(fā)布鸦难,稱為“ECMAScript 2016”根吁。

簡述頁面的渲染機制

  • 解析 HTML 標簽, 構(gòu)建 DOM 樹
  • 解析 CSS 標簽, 構(gòu)建 CSSOM 樹
  • 把 DOM 和 CSSOM 組合成 渲染樹 (render tree)
  • 在渲染樹的基礎(chǔ)上進行布局, 計算每個節(jié)點的幾何結(jié)構(gòu)
  • 把每個節(jié)點繪制到屏幕上 (painting)


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

  • 使用 link 標簽將樣式表放在頂部
  • 將JS放在底部
    1.腳本會阻塞后面內(nèi)容的呈現(xiàn)
    2.腳本會阻塞其后組件的下載

解釋白屏和 FOUC

  • 白屏是由于把script標簽放在了head頭部進行加載合蔽,由于script標簽的特性會阻礙其他文件加載击敌,必須等待腳本加載完畢,其他資源才能進行加載顯示拴事,應(yīng)該放在body的尾部進行加載避免白屏沃斤,把CSS文件放在底部同樣也會造成白屏,用@import也會刃宵。
  • FOUC(flash of unstyled cotent)無樣式內(nèi)容閃爍:是由于把css的link標簽放在了HTML標簽后面衡瓶,那么瀏覽器就會先渲染到HTML標簽展示無樣式的標簽,等到加載到對應(yīng)的CSS樣式后牲证,會進行重繪哮针,回流,造成無樣式閃爍坦袍。

如何異步加載腳本

  • 沒有 defer 或 async十厢,瀏覽器會立即加載并執(zhí)行指定的腳本,“立即”指的是在渲染該 script 標簽之下的文檔元素之前捂齐,也就是說不等待后續(xù)載入的文檔元素蛮放,讀到就加載并執(zhí)行。
  • 有 async辛燥,加載和渲染后續(xù)文檔元素的過程將和 script.js 的加載與執(zhí)行并行進行(異步)筛武。
  • 有 defer,加載后續(xù)文檔元素的過程將和 script.js 的加載并行進行(異步)挎塌,但 script.js 的執(zhí)行要在所有元素解析完成之后,DOMContentLoaded 事件觸發(fā)之前完成内边。

介紹下 repaint和 reflow的概念

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末榴都,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子漠其,更是在濱河造成了極大的恐慌嘴高,老刑警劉巖竿音,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異拴驮,居然都是意外死亡春瞬,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門套啤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宽气,“玉大人,你說我怎么就攤上這事潜沦√蜒模” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵唆鸡,是天一觀的道長涝影。 經(jīng)常有香客問我,道長争占,這世上最難降的妖魔是什么郎逃? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮碎税,結(jié)果婚禮上霜运,老公的妹妹穿的比我還像新娘。我一直安慰自己刻蟹,他們只是感情好逗旁,可當(dāng)我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著舆瘪,像睡著了一般片效。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上英古,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天淀衣,我揣著相機與錄音,去河邊找鬼召调。 笑死膨桥,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的唠叛。 我是一名探鬼主播只嚣,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼艺沼!你這毒婦竟也來了册舞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤障般,失蹤者是張志新(化名)和其女友劉穎调鲸,沒想到半個月后盛杰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡藐石,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年即供,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片于微。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡逗嫡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出角雷,到底是詐尸還是另有隱情祸穷,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布勺三,位于F島的核電站雷滚,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏吗坚。R本人自食惡果不足惜祈远,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望商源。 院中可真熱鬧车份,春花似錦、人聲如沸牡彻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽庄吼。三九已至缎除,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間总寻,已是汗流浹背器罐。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留渐行,地道東北人轰坊。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像祟印,于是被迫代替她去往敵國和親肴沫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,490評論 2 348

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