是否有写下列内容的简写或功能?
x = x? x+1 : 1
最近我发现自己需要经常检查是否已经定义了一些嵌套对象atttribute,如果有,则增加它,这使得上面的行非常长。类似的东西:
object1[atttribute1][atttribute2][atttribute3] = object1[atttribute1][atttribute2][atttribute3]? object1[atttribute1][atttribute2][atttribute3]+1:1;
我想知道是否有一些可以做到这一点的内置函数?沿着:
x = performActionIfExistsOrAssignDefault(x, add1, 1)
function add1(x){
return x+1;
}
答案 0 :(得分:3)
为此没有内置的魔法(虽然你可以自己创建一个函数),但写这个的方法要短得多:
x = (x || 0) + 1
这可以转换为第二个示例中的数组,以及
object1 = (object1 || [])
object1[attr1] = (object1[attr1] || [])
如果您不知道属性存在,此方法也可用于访问深层嵌套对象:
var something = (((obj || {}).prop1) || {}).prop2 || {}).prop3;