保留字: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"

           }

       }