JavaScript模式 --- 札记

全局变量的问题

创建隐式全局变量的反模式是带有var声明的链式赋值。在下面的代码片段中, a 是局部变量, b 是全局变量,这也许并不是你想要的

function foo(){
  var a = b = 0; //var a   window.b;

  // ....
}

//造成上面的原因是源于从右至左的操作符优先级。首先,优先级较高的是表达式 b=0, 此时b未声明。表达式的返回值为0,它被赋给 var 声明的局部变量 a.
/* 建议这样做 */ function foo(){   var a, b;   // ...   a = b = 0; // 均为全局变量 }

 

保留字

保留字不能被用来命名变量或参数,当保留字被用做对象字面量的键值时,它们必须被引号括起来。 它们不能被用在 . 点表示法中,所以有时候必须使用括号表示语法。

1     var method;                 // ok
2     var class;                  // 非法
3     object = {box: value};      // ok
4     object = {case: value};     // 非法
5     object = {"case": value};     // ok
6     object.box = value;         // ok
7     object.case = value;        // 非法
8     object['case'] = value      // ok

 

posted @ 2014-05-26 18:02  会敲代码的狼  阅读(136)  评论(0编辑  收藏  举报