一、前言: 前段時間看紅寶書(JavaScript高級程式設計),但沒有計劃的去看,也沒有做詳細的筆記,讀了之後有點空虛,感覺不對勁啊,學的東西很難記住,印象不深啊,有種挫敗感,作前端的js都學不好怎麼做前端。後端都學js了,你說死不死。 因此吾閱之,再閱之,並決心記之以博客,以增強印象,作得讀書筆 ...
一、前言:
前段時間看紅寶書(JavaScript高級程式設計),但沒有計劃的去看,也沒有做詳細的筆記,讀了之後有點空虛,感覺不對勁啊,學的東西很難記住,印象不深啊,有種挫敗感,作前端的js都學不好怎麼做前端。後端都學js了,你說死不死。
因此吾閱之,再閱之,並決心記之以博客,以增強印象,作得讀書筆記,以便日後翻看及供大家參閱與討論。
溫馨提示:筆記言辭會有主觀色彩,知識重點記錄。
二、JavaScript歷史
起源:話說在上世紀末1995年,Netscape公司推出Navigator瀏覽器。人家公司有追求,不單單能實現靜態HTML,人家還想要有動態效果,還想著能去處理表單的驗證,不要老是等到後臺那邊才知道表單輸入合不合法,特別在那個年代,一次一等就上分鐘,現在我們等上個十秒都想關掉它是不是,嘴邊還吐槽著什麼破網站。
動手:有目標就去做,Netscape公司大牛多,Brendan Eich 用10天(網上說10天)就把JavaScript搞了出來,剛出來時叫LiveScript,為了蹭蹭當紅明星Java熱度,就改成JavaScript了,所以事實上他們兩沒啥關係。
競爭:看到Netscape公司有了js,微軟感覺不行啊,我的IE要被幹掉啊,同時也感到js的前途無量,於是弄了個名為JScript的JavaScript的實現。
標準: Netscape和微軟競爭出現的js導致版本的不一致,隨著業界的擔心,JavaScript的標準化被提上議事日程。ECMA組織就去乾這事,最後在弄出97年了ECMAScript作為標準。這裡ECMAscript和JavaScript可以看做表達同一個東西
三、ECMAScript
ECMAScript(以下簡稱ES)由ECMA-262制定,ES的主要是語言的語法基礎,是一種標準的存在。如果硬要區分ES和JS,ES是語言基礎標準,而JS就是在這標準的基礎上所實現的語言。
關於ES版本:ES從1997年制定好到現在已經經歷很多版本,前面的版本都是一些小的修改。重要版本:
- ES3,第三個版本,是對標準的第一次真正意義上修改
- 2009年的ES5是當前各大流行瀏覽器所支持的
- 2015年出版的ES6也流行起來。
- 2015年後的每年也出版本,但瀏覽器還沒能夠支持。
四、JavaScript實現
javascript由三部分組成:
1.ECMAScript :核心部分,是js的語法基礎,後面會繼續寫其語法。
2.DOM(文本對象模型) :用於操作HTML文檔的應用編程介面。關於DOM:
- DOM的出現使得動態HTML(DHTML)得以實現,可以不用重新載入頁面而改變網頁的外觀和內容。
- DOM帶來的問題:主要是相容性方面,Netscape和微軟各抒己見,使得瀏覽器不相容的局面產生。未解決此問題W3C著手規劃DOM
- DOM級別:DOM1,DOM2,DOM3 ,這裡的級別相當於DOM的版本一樣,代表著DOM在不斷的完善,現在最新是DOM3
3.BOM(瀏覽器模型) :使用BOM可以控制瀏覽器顯示的頁面以外的部分
五、JavaScript使用:
(1)標簽屬性:在網頁中使用js關鍵的是使用<script>
標簽,其有6個屬性:
- async:可選,表示立即下載腳本,但不妨礙頁面中的其他操作。也就是非同步腳本,只適用於外部腳本文件。
- defer:可選,表示腳本可以延遲到文檔完全被解析和顯示後在執行。也就是延遲腳本,只適合與外部腳本文件。
- src:可選,表示包含要執行代碼的外部文件。
- type:預設text/Javascript。預設執行js,可以不用指定。
- charset:可選,表示通過src屬性指定代碼的字元集,大多數瀏覽器會忽略它的值,很少人使用。
- language:已廢棄
常用就前4個
(2)使用:使用<script >
:有兩種操作:
1. 直接在標簽內寫入代碼,即在html中內嵌代碼,這種方式不推薦。如:
<script>
function helloWorld(){
alert("hello world!");
}
helloWorld();
</script>
2. 另一種通過src屬性引入外部的文件。
<script src="js/hello.js"></script>
儘可能使用外部引用js文件,優點:
可維護性:內嵌代碼在html中,維護困難且可讀性差,在js單獨的文件中維護將輕鬆的多。
可緩存:瀏覽器可以根據具體的設置緩存鏈接的所用外部js文件
適應未來:通過外部文件來包含js無須對XHML的特別處理和註釋hack。HTML和XHTML的包含文件的語法相同。
特別註意:
<script>
在使用了src屬性後,不要在內嵌代碼,此時的內嵌的代碼不會被執行。只會執行src對應文件的代碼。
(3)位置:關於<script>
在HTML文檔中的位置:
在HTML4中規定<script>
標簽可以放在 <head>
和<body>
標簽內。
由於瀏覽器解析HTML文檔是由上到下,且在遇到<script>
標簽後會先解析和執行js代碼,並中斷HTML的載入,所以放在<head>
標簽中是會使得HTML文檔可視內容中斷載入。
畫重點:所以<script>
標簽的位置首考慮放在<body>
標簽底部。例如:
<html>
<head>
<title>hello js</title>
</head>
<body>
<p>hello js!</p>
<!-- js文件放在body底部 -->
<script src="example.js"></script>
</body>
</html>
六、JavaScript的平穩退化方案
什麼是平穩退化:就是有些瀏覽器不支持js,當然現在幾乎沒有瀏覽器這麼菜啦,還有就是js功能被禁用。這時就需要沒有js的情況下你的網頁怎麼友好一點交互,不會搞得太難看,太尷尬。
使用<noscript>
標簽,應用場景:
- 瀏覽器不支持JavaScript
- 瀏覽器支持腳本,但腳本被禁止了
例子:當瀏覽器不支持js或禁用js時就會顯示出noscript標簽中的內容,若瀏覽器能執行js則noscript就被隱藏。
<html>
<head>
<script src="example.js"></script>
</head>
<body>
<noscript>
<p>本頁面需要瀏覽器支持JavaScript</p>
</noscript>
</body>
</html>
七、後記
這是看紅寶書的第一篇筆記,涵蓋了一二章的內容,都是知識點。本系列博客將會繼續更新,一同和大家分享分享。如果覺得寫得好就給個贊吧。謝謝大家。
分享一句話:時間不會停下來等你,我們現在過的每一天,都是餘生中最年輕的一天。