Ответ 1
Это приведет к NaN
для первого приращения, по умолчанию будет 0
.
obj.prop = ++obj.prop || 0;
Мне нравятся те короткие jel oneliners. Я хотел бы знать, есть ли что-то логичное и элегантное для:
Короче, чем это предпочтительнее;)
var obj = {} ;
//some iterative called function
obj.prop = obj.prop===undefined?0:obj.prop++;
Это приведет к NaN
для первого приращения, по умолчанию будет 0
.
obj.prop = ++obj.prop || 0;
Более чистый способ сделать это - просто
obj.prop = obj.prop + 1 || 0;
Использование оператора инкремента является неправильным или излишним. Суффиксный оператор x++
(пример в вопросе) не должен работать вообще. Префикс ++x
приводит к назначению дважды (например, высказывание x = x = x+1
)
Более короткое решение: obj.prop = - ~ obj.prop
Как и Я ненавижу ленивый ответ, но избегает двойного назначения, поскольку Bodgan указывает
++obj.prop || (obj.prop=0)
в глобальной области
++window.foo || (window.foo=0)