####逻辑运算 运算符||与&&既不改变运算元的数据类型,也不会强制运算结果的数据类型。运算符会将运算元理解为布尔值,以进行布尔运算。运算过程支持布尔短路。因此我们 经常看到为了兼容性的写法 var a = b || c, 简化语句if(b) {c =x;}为 c = b && x,这都是利用逻辑运算的不强制类型运算结果的数据类型和布尔短路。 ####函数调用语句 //示例1:具名函数的调用 function foo() { } foo(); //示例2:匿名函数通过引用调用 fooRef = function() { } fooRef(); //示例3:没有引用的匿名函数调用方法(1) (function(){ //…. }()); //示例4:没有引用的匿名函数调用方法(2) (function(){ //… })(); //示例5:没有引用的匿名函数调用方法(3) void function() { //… }();

####存取对象成员(属性,方法) “.”和”[]”都是对象成员存取运算符,所不同的是:前者右边的运算元必须是一个标识符,后者中间的运算元可以是变量、直接量或表达式。由于”.”号要求运算元是标识符,因此 对一些不满足标识符命名规则的属性,就可以使用”[]”号。例如 : var obj = { ‘a.b’: 1234, ‘1’:456, ‘.’:89 } obj中的”a.b”,”1”,”.”这些属性名,这种情况下就只能用”[]”运算符。

####构造器创建对象实例 new constructor[(arguments)] 语法中,当参数为空时与没有参数表是一致的,因此下面两行代码是等义的: obj = new constructor; obj = new constructor(); 但是,我们不能认为constructor后面的括号是函数调用的括号。

####对象直接量声明 obj = { propertyName: expression[,…]} 这里的名字(propertyName)可以用字符串来表示,也可以只是一个标识符。空字符串、点号、数字也可以作为属性名。

####正则表达式直接量声明 //有正则表达式直接量如下 rx = /abcd\n\r/gi; //使用字符串创建的正则表达式对象 rx = new RegExp(‘abcd\n\r’,’gi’); 如果你认为这两个正则应该是一样的,那你就忽略了一个问题:在字符串中”"也是转义符,因此用’abcd\n\r’来创建正则表达式对象时既非语法错误,也不导致运行错-它只是与开发人员的预期不一致而已。 解决该问题的方法是字符串中的”"增加转义,因此上例应该被修改为: rx = new RegExp(‘abcd\n\r’,’gi’);