保留字: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{};//abc都引用同一空對象

          var a={}, b={}, c={};//abc引用不同的空對象

原型:??

枚舉:for in 過程將會列出所有的屬性——包括函數和你可能不關心的原型中的屬性。所以可以用下面兩種方式過濾掉那些你不想要的值:


 

1.hasOwnProperty

         
var name;

         
for(name in another_stooge){

                   
if(typeof another_stooge[name] !== 'function'){

                            document.writeln(name 
+ ': " + another_stooge[name]);

                   }        

         }

2.

         var i;

         var properties = {

                   'first-name',

                   'middle-name',

                   'last-name',

                   'profession'

         };

         for( i=0; i<properties.length; i+=1){

                   document.writeln(properties[i] + 
"" + another_stooge[properties[i]]);

         }



最小化使用全局變量的方法之一



      var MYAPP = {};

    用該變量作為容器:

       MYAPP.stooge = {

           
"first-name""Joe",

           
"last-name""Howard"

       };

       MYAPP.flight = {

           airline: 
"Oceanic",

           number: 815,

           departure:{

              IATA: 
"SYD",

              time: 
"2004-09-22 14:55"

              city: 
"Sydney"

           }

       }