Короткий код javascript для: initialize to zero or increment

Мне нравятся те короткие jel oneliners. Я хотел бы знать, есть ли что-то логичное и элегантное для:

  • инициализация переменной до нуля, если undefined
  • приращение на другое.

Короче, чем это предпочтительнее;)

var obj = {} ; 

//some iterative called function
obj.prop = obj.prop===undefined?0:obj.prop++;

Ответы

Ответ 1

Это приведет к NaN для первого приращения, по умолчанию будет 0.

obj.prop = ++obj.prop || 0;

Ответ 2

Более чистый способ сделать это - просто

obj.prop = obj.prop + 1 || 0;

Использование оператора инкремента является неправильным или излишним. Суффиксный оператор x++ (пример в вопросе) не должен работать вообще. Префикс ++x приводит к назначению дважды (например, высказывание x = x = x+1)

Ответ 3

Более короткое решение: obj.prop = - ~ obj.prop

Ответ 4

Как и Я ненавижу ленивый ответ, но избегает двойного назначения, поскольку Bodgan указывает

++obj.prop || (obj.prop=0)

в глобальной области

++window.foo || (window.foo=0)