全局变量的问题
创建隐式全局变量的反模式是带有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