【发布时间】:2012-05-01 08:59:42
【问题描述】:
Javascript 代码
var a = {};
a.test += 1; //NaN
++a.test; //NaN
相反
var a = {};
a.test = 0;
++a.test; //1
a.test += 1; //2
我想知道是否有任何方法可以使第一个代码示例与第二个代码示例一样工作,即没有显式分配给 0。就像将对象的任何属性的默认值分配给 0 而不是 undefined。我正在尝试在 node.js 中执行此操作。所以,跨浏览器的东西和旧的 ECMA 规范没有问题。
var i;
for(i = 0; i<10; i++) {
if(a.test) {
++a.test;
} else {
a.test = 0;
++a.test;
}
//a.test = a.test || 0; (1)
//++a.test;
}
如果可能的话,上面代码中的内部if/else或者赋值语句(1)可以去掉。
【问题讨论】:
-
有什么理由不能简单地使用
var a = {test: 0};? -
@outis 属性是动态生成的。你甚至可以考虑 var a = [];一个[0]++;这里无法预先确定数组的大小
-
如果
a.test === false或""会发生什么? a.hasOwnProperty("test") 如果您试图确定该属性是否存在,这样做会更安全
标签: javascript node.js object