保留字:enu export extends final finally goto implements import in interface native package private protected public super synchronized throw throws transient typeof volatile void等
JavaScript語言中,本該被保留而沒有保留的字:undefined、NaN和Infinity
標識符:JavaScript不允許使用保留字來命名變量或參數 不允許在對象字面量中、或在一個屬性存取表達式的點號之后,使用保留字作為對象的屬性名。
數字:NaN是一個數值,它表示一個不能產生正常結果的運算結果,不等于任何值,包括自己。
字母串:”serven”.length 是5 “A”===“"u0041” 沒有字符,只有字符串,字符串不可變,一旦創建就無法改變它,只能通過+運算符連接其他字符串。‘c’+’a’+’t’===’cat’等于true。
代碼塊:是包在一對花括號的一組語句。JavasScript中的代碼塊不會創建一個新的作用域,因此變量應該被定義在函數的頂端,而不是在代碼塊中。
If:這些值被當作假(falsy) false null undefined 空字符串’’ 數字0;其他所有的值都被當作真,包括true、字符串”false”,以及所有的對象。
case:case從句包含一個或多個case表達式。case表達式不一定必須是常量。
return: 如果沒有指定返回表達式,那么其返回值是undefined.不允許在return關鍵字和表達式之間換行。
Break:break語句會使程序退出一個循環語句或switch語句。它可以指定一個可選的標簽,那將使程序退出帶該標簽的語句。同樣的不允許在break關鍵字和標簽之間換行。
&&:如果第一個運算數等于true,則決定權在第二個運算數。
嘗試檢索一個undefined值將會導致TypeError異常,可以值通過&&來避免錯誤:
flight.equipment; flight.equipment.model //throw TypeError
fight.equipment && flight.equipment.model //
||:如果第一個運算數等于false,則決定權在第二個運算數。
可以用來填充默認值,如:
var middle = stooge[“middle-name”] || ”none”;
var status = flight.status || “unknown”;
Invocation expression:函數調用運算符是跟隨在函數名后面的一對圓括號。
Refinement expression:一個屬性存取表達式用于指定一個對象或數組的屬性或元素。
object literal : { [name:expression] , [string:expression] }
regexp literal:
JavaScript的簡單類型包括數字、字符串、布爾值、null值和undefined值。其他所有的值都是對象。數字、字符串和布爾值“貌似”對象,因為它們擁有方法,但它們是不可變的。JavaScript中的對象是可變的鍵控集合(keyed collections)。在JavaScript中,數組是對象,正則表達式是對象,當然,對象自然也是對象。
對象是屬性的容器,其中每個屬性都擁有名字和值。屬性的名字可以包括空字符串在內的任意字符串。屬性值可以是除undefined值之外的任何值。
Object literals:對象字面量:包圍在一對花括號中的零個或多個“名/值”對,對象字面量可以出現在任何表達式出現的地方。如果屬性名是合法標識符,并不強制要求用引號括住屬性名。所以”first-name”是必須的,”first_name”則是可選的。
更新:對象值可以通過賦值語句更新,如果對象之前并沒有擁有這個屬性名,那么該屬性就被擴充到該對象中。
引用:對象通過引用來傳遞,它們永遠不會被拷貝。
var a =b=c{};//a、b、c都引用同一空對象
var a={}, b={}, c={};//a、b、c引用不同的空對象
原型:??
枚舉:for in 過程將會列出所有的屬性——包括函數和你可能不關心的原型中的屬性。所以可以用下面兩種方式過濾掉那些你不想要的值:







































































