是否有编写以下内容的速记或功能?

x  = x? x+1 : 1


最近,我发现自己需要经常检查是否已定义了一些嵌套对象属性,如果有,请对其进行递增,从而使上面的行很长。就像是:

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

最佳答案

没有内置的魔术(尽管您可以自己创建一个函数),但是写此代码的方式明显短得多:

x = (x || 0) + 1


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

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


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

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

关于javascript - 添加到变量(如果已定义或分配)的简写/函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48935992/

10-12 17:14