《javascript高效能程式設計》知識點小結

來源:互聯網
上載者:User

1.javascript 包括三部分:ECMAScript、DOM、BOM;
ECMAScript規定了這麼語言的下列組成部分:文法、類型、語句、關鍵字、保留字、操作符、對象;
DOM,是針對XML但是經過擴充用於HTML的應用程式介面(API),DOM把整個頁面映射成一個多層節點結構
BOM,可以訪問和操作瀏覽器視窗的瀏覽器物件模型。包括的內容有:處理瀏覽器視窗和架構、彈出新瀏覽視窗、移動、縮放和關閉瀏覽器視窗、提供瀏覽器詳細資料的navigator對象、提供瀏覽器所載入頁面的詳細資料的location對象、提供使用者顯示器解析度詳細資料的screen對象、對cookies的支援、像XMLHttpRequest和IE的ActiveXObject這樣的自訂對象。

2.javascript檔案為什麼需要放在<body>元素中頁面的內容後面?
因為加入放在<head>中,必須等全部javascript代碼被下載、解析和執行完成以後才開始呈現頁面

3.嵌入外部檔案的好處?   可維護性、可緩衝(假如兩個頁面都使用了同一個js檔案,那麼只需要下載一次就可以了,因為瀏覽器可以根據具體的設定緩衝串連的所有外部js檔案)、使用未來。

4.null與undefined的區別:無論在任何情況下均沒有必要把變數設定為undefined,但是對null則不合適。話句話說只要意在儲存對象的變數還沒有真正儲存對象,

就應該明確地讓該變數儲存為null。

5. js檔案不介意傳遞來多少個參數,也不在意進來的參數是什麼資料類型,因為js中的參數在內部是用一個數組來表示的,函數接受到的始終是這個數組,而不關心數組中

包含哪些參數

6.js變數包括基本類型值、參考型別值,其中參考型別值不允許直接存取記憶體中的位置,也就是說不能直接操作對象的記憶體空間。在操作對象時,實際上是在操作對象的引用

而不是實際的對象,引類型的值是按引用訪問的。對於參考型別的值可以為其添加屬性和方法,而基本類型值卻不可以。

7.js函數的參數傳遞都是按值傳遞進行的

8.js沒有塊級範圍

9.js具有自動垃圾收集機制,也就是說執行環境會負責管理代碼執行過程中使用的記憶體。方式有垃圾清除和引用計數,垃圾清除:當變數進入環境時,就將變數標記為“進入環境”,,當變數離開環境時,則將其標記為“離開環境”;引用計數:追蹤記錄每個值被引用的次數。

10.解除一個值的引用並不意味著自動回收該值所佔的記憶體,真正作用是讓值脫離執行環境,以便垃圾收集器下次運行時將其回收。

11.js的數組是可以隨著資料的添加自動成長以容納新增資料。

12.Array.sort()比較的是字串,例如 var a = [1,2,5,35]; a.sort();結果為1,2,35,5。

如果需要比較數值大小,可以寫一個函數 function compare(value1,value2){ if(value1>value2) return 1;.....} a.sort(compare);即可達到1,2,5,35。

13.Array.splice(a,b,c..)可是實現刪除、插入、替換數組中的資料。a表示其實位置,b表示刪除個數,c表示添加的資料項目。

14.Regex字面量始終會共用共一個RegExp執行個體,而使用建構函式建立的每一個新RegExp執行個體都是一個新的執行個體。

Regex元字元含義:
a)、{n} :表示匹配確定的n次; b)、{n,}:表示匹配的至少n次; c)、{n,m}:表示匹配的至少n次,至多m次;
d)、^:匹配輸入字串的開始位置; e)、$:表示匹配輸入字串的結束位置; f)*、表示匹配前面的字元或子運算式0次或者多次;
g)、+:表示匹配前面的字串1次或者多次 h)、?:表示匹配前面的字元或子運算式0次或1次;
i)、(*、+、?、{n})?後面,表示匹配搜尋到的、儘可能短的字串; j)、.:匹配除“/n”之外的任何單個字元;
k)、x|y:匹配x或者y;  l)、[xyz]:匹配其中的任意一個字元;          m)、[a-z]:匹配製定範圍內的任一字元。

15.function其實是一種類型,每個函數都是function類型的執行個體,而且都與其他參考型別一樣具有屬性和方法。函數是對象,函數名是指標。使用不帶圓括弧的

函數名是訪問函數指標,而非調用函數。

16.函式宣告和函數運算式的區別:解析的順序是不一樣,解析器會率先讀取函式宣告,並使其在執行任何代碼之前可以,至於函數運算式,則必須等到解析器執行到其所在的

程式碼,才會真正被解釋執行。

17.函數appllay()、call()方法都是在特定的範圍中調用函數,僅在於接受參數的方式不同。使用這兩個方法的最大好處是對象不需要與方法有任何耦合關係。

18.參考型別和基本封裝類型的區別:就是對象的生存期。使用new操作符建立的參考型別的執行個體,在執行流離開當前範圍之前一直儲存在記憶體中;

而自動建立的基本封裝類型的對象,則只存在於一行代碼的執行瞬間,然後立即銷毀。

19.Global對象:在某種意義上是作為一個終極的“兜底對象”來定義的,換句話說,不屬於任何其他對象的屬性和方法,最終都是它的屬性和方法。

ECMAScript雖沒有明確指出如何訪問Global對象,但是WEB瀏覽器都是將這個全域對象作為window對象的一部分加以實現的。因此在全域範圍中沒有聲明的對象和函數,
就將成為window對象的屬性。

20.建構函式跟普通函數沒有區別,用New後跟的就是建構函式,沒有用則就是普通函數。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.