添加到变量(如果已定义或分配给它)的简写/函数?

时间:2018-02-22 19:47:10

标签: javascript

是否有写下列内容的简写或功能?

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;
}

1 个答案:

答案 0 :(得分:3)

为此没有内置的魔法(虽然你可以自己创建一个函数),但写这个的方法要短得多:

x = (x || 0) + 1

这可以转换为第二个示例中的数组,以及

object1 = (object1 || [])
object1[attr1] = (object1[attr1] || [])

如果您不知道属性存在,此方法也可用于访问深层嵌套对象:

var something = (((obj || {}).prop1) || {}).prop2 || {}).prop3;