天天看點

javascript語言精粹讀書筆記——第二章

書中用鐵路圖來描述文法

特意看了維基百科的連接配接,總結下Syntax_diagram的規則:

  • 從左邊開始,沿着軌道到右邊界
  • 沿途在圓框中遇到的是字面量,方框中遇到的是規則和描述
  • 沿着軌道能走通的都是合法的
  • 任何沿着軌道不能走通的都是非法的
  • 末端有一條豎線的标示允許在任意一對符号中間插入空白,而在末端有兩個豎條不允許。

在維基百科的連接配接:http://en.wikipedia.org/wiki/Syntax_diagram

關于注釋:存在一些安全隐患建議使用//注釋

  • 标示符:

開頭字母,後面跟字母、數字、下劃線,不能使用保留字

  • 數字:

隻有一個數字類型。在内部表示為64位浮點數。沒有分理出整型,so 1和1.0的值是相同的

指數的表示100表示為1e2

NaN是一個數值,表示一個不能産生正常結果的運算,可以用函數isNaN(number)來檢測NaN

數字擁有方法。javascript有一個對象Math,它包含一套作用于數字的方法。

例如:Math.floor(number)把一個數字轉換成整數

  • 字元串:

javascript中所有的字元都是16位的,被包含在一對“”或‘’之間,可能包括0個或多個字元。 \代表轉義字元,它允許正常情況下不被允許的字元集插入到字元串 例如:\u約定用來指定數字字元編碼“A” === “\u0041”  \b backspace \n newline 有length屬性“seven”.length 是5 可以用+運算符連接配接字元串,來建立新字元串 字元串也有方法例如:‘cat’.toUpperCase() === 'CAT'

  • 語句

var 語句被用在函數内部時,它定義的是函數的私有變量 switch,while,for,do允許有一個可選的前置标簽(label)它配合break使用 語句通常按照從上到下的順序執行,javascript可以通過條件語句(if 和switch)、循環語句(while,for,do)、強制跳轉語句(break、return、throw)和函數調用來改變執行順序 代碼塊是包含在{}中的一組語句,javascript的代碼塊不會建立作用域,是以變量應該定義在 函數的頭部下面的值被當做假: false null undefined ‘’ 0 NaN 其他都是真,包括true、‘false’,以及所有的對象 for語句有兩種形式 第一種由三個可選從句控制:初始化從句(initialization)、條件從句(condition)、增量從句(increment) 執行順序:首先執行condition,他的作用通常是初始化循環變量,接着計算condition的值,如果condition被省略掉,則假定傳回的是真。如果condition為假終止循環。否則,執行代碼,然後執行increment,接着重複執行condition 另一種形式(for in)會枚舉一個對象的所有屬性名(或鍵名)。在每次循環中,object的下一個屬性名字元串被指派給variable。 通常要檢測object.hasOwnProperty(variable)來确定屬性名是該對象的成員,還是來自于原型鍊 try、catch、throw try語句執行一個代碼塊,并捕獲該代碼塊抛出的任何異常。catch從句定義一個新的variable來接收抛出的異常對象。 throw語句抛出一個異常,如果throw語句在一個try代碼塊中,那麼控制流會跳轉到catch從句中。 如果throw語句在函數中,則該函數調用被放棄,控制流跳轉到調用該函數的try語句的catch從句   throw語句中的表達式通常是一個對象字面量,他包含一個name屬性和一個message屬性。異常捕獲器可以根據這些資訊決定該做什麼。

  • 表達式

最簡單表達式是字面量(字元串、數字等)、 變量 内置的值 new開頭的表達式 delete開頭的屬性提取表達式 包在圓括号中的表達式 前置運算符+表達式 表達式後面+

  •   一個中置預算符與另一個表達式
  •   ?表達式1:表達式2
  •  函數調用
  •   屬性提取表達式

運算符的優先級 . [] () delete new typeof + - ! * / % + - >= <= > < === !== && || ?: 對運算符的解釋: typeof運算符産生的值包括:‘number’、‘string’、‘boolean’、‘undefined’、‘function’、‘object’ &&如果第一個運算符的值為假,産生第一個運算符的值,否則産生第二個運算符的值 ||如果第一個運算符的值為真,産生第一個運算符的值,否則産生第二個運算符的值 函數的調用運算符是跟随在函數名後面的括号 ()或(expression, expression,……) 屬性提取 .name或[ expression]

  • 字面量

對象字面量

    是一種可以友善的按指定規格建立新對象的表示法。     屬性名可以是辨別符或字元串。這些名字被當做字面量名而不是函數名對待,是以對象的屬性名在編譯的時候才能知道。屬性的值就是表達式。 數字 字面量     是一種可以友善的按指定規格建立新數組的表示法。 函數字面量     函數字面量定義了函數的值。     它可以有一個可選的名字,用于遞歸調用自己。可以指定一個參數清單,這些參數就像變量一樣在調用時由實際參數初始化,函數體包括變量定義的語句