javaScript的精華與糟粕

Fardwn發表於2019-02-16

最近在看JavaScript語言精粹這本書,建立完整的js知識體系。

1.關於JavaScript語言
js是一門未在實驗室打磨過的語言,存在這很多考慮不全面、甚至bug,因此我們很有必要學習本書,已達到去除糟粕,取其精華的效果。

當前JavaScript已成為瀏覽器通用語言,其重要性不言而喻,需要提的一點是,其DOM和BOM編寫的十分糟糕,老道稱寫一本關於BOM或者DOM精華的書是一項不可能完成的任務.

優點:①函式 ②弱型別 ③物件字面量 ④動態物件
缺點:全域性變數的程式設計模式

JavaScript為單執行緒語言,自上至下依次執行,遇到函式呼叫、break語句、return語句可改變程式的執行順序。

2.語法
資料型別:number、Boolean、string、null、undefined、object。
其中number型別不區分整型和浮點型(即1和1.0全等)
Boolean包括true和false(小寫,大寫或其他寫法則不是Boolean型別)
string:用單引號或雙引號包裹的0個或者多個字元(其中字串一旦建立,永遠無法改變,string的一些方法只是生成了新字串或者複製操作,不會改變原字串)
null一般用來聲名空物件,typeof null值為object。
undefined則為定義了,為初始化的變數。
object為物件,陣列、函式均屬於特殊的物件。

語句:條件語句,迴圈語句、break語句(用於迴圈語句、switch語句中)、return語句(用於函式中,終止函式執行)
迴圈語句:for語句、while語句、do-while語句(其中for有兩種形式,for-in語句用於物件的列舉,使用時要判斷屬性是否存在 hasOwnProperty檢測)

3.物件(用大括號包裹的0個或多個鍵值對,其中key可為任意字串,value值為除undefined外的任意值)
物件為按引用傳遞,建立後不可被複制.

4.陣列(用方括號包裹的0個或多個用逗號隔開的表示式)
js的陣列不是嚴格意義上的陣列,因此效率略低,但其有自己的特點,使用方便,含有很多內建方法,有length屬性了, 沒有陣列越界情況,可自動擴容.

陣列中的值可以是不同型別的

5.函式 (被老道成為js中最出色的設計,接近完美)
可以被呼叫的物件,有自己的作用域.

函式的呼叫:函式的呼叫,即傳遞程式的執行的環境和引數給被呼叫函式.
根據this取值和繫結時機不同,可分為四種呼叫方式:
①方法呼叫.物件才有方法,函式為物件中的屬性值, O.test()(方法後跟隨一對小括號-呼叫符號),此時,this為呼叫的物件O,執行時繫結.
②函式呼叫.this為全域性物件.(老道稱此為js設計時的錯誤,即在物件內部呼叫函式時,函式的this指向全域性變數,而非當前物件的內部作用域,解決方法that=this)
③構造器呼叫(不常用,且晦澀).
使用new建立函式,然後呼叫.
④apply呼叫.
apply方法可傳入兩個引數,第一個引數是需要繫結的this值,第二個是需要傳入的引數(陣列形式),call為連續出入引數.

遞迴方法.效率高,速度快,特別是操作DOM文件.

6.正規表示式。(高效操作字串的方法,比string的自帶的方法速度快)

相關文章