Allow initialising variables and object properties with addition assignment

I guess all of us have written code like this:

obj = {}

if (!obj.foo) {
  obj.foo = bar
} else {
  obj.foo += bar
}

It would be a lot more concise if we could just write:

obj = {}

obj.foo += bar

So if foo doesn't exist yet, it gets initialised with the value of bar.

Thoughts?

+= already does + combined with assignment for this case. For what you're asking about, i think you'd need obj.foo ||= bar or obj.foo ??= bar?

Thank you for the hint with ||=.

I guess I would hope obj.foo += bar to work like obj.foo = obj.foo + bar || bar.

Example:

let fooExists = {
  foo: 4
}

let fooDoesntExist = {}

function addTwo(obj) {
  obj.foo = obj.foo + 2 || 2
  return obj
}

addTwo(fooExists)
// foo => 6

addTwo(fooDoesntExist)
// foo => 2

If I run the following code instead it will return NaN

let fooDoesntExist = {}

function addTwo(obj) {
  obj.foo += 2
  return obj
}

addTwo(fooDoesntExist)
// foo => NaN

Now that I know of obj.foo = obj.foo + bar || bar it's fine though. Even though I think obj.foo += bar is more concise and better looking.

Edit:
I guess this would also be a nice syntax: obj.foo += 2 || 2. But it also returns NaN if foo doesn't exist yet.