一行检查属性是否存在并有条件地设置它?

时间:2014-04-17 08:38:49

标签: javascript

我想在一行中重写这段代码,如果可能的话:

//Obj is my mystery object - I don't know whether or not property x exists, but if it does, I want to set it!

if (Obj.x) {
   Obj.x = (Obj.x > 0) ? Obj.x++ : Obj.x--;
}

1 个答案:

答案 0 :(得分:2)

一种可能的方式:

Obj.x && (Obj.x = Obj.x > 0 ? Obj.x++ : Obj.x--);

或不太理想:

Obj.x = Obj.x ? Obj.x > 0 ? Obj.x++ : Obj.x-- : Obj.x;

FWIW ,你的情况有点奇怪,因为你做了后增量(和减量),它修改了值,但是立即将初始值保存回变量,所以值没有& #39;改变。你最好不要保存价值:

Obj.x && (Obj.x > 0 ? Obj.x++ : Obj.x--);

或以不同的方式做:

Obj.x && (Obj.x = Obj.x > 0 ? Obj.x + 1 : Obj.x - 1);
相关问题