Skip to content

Comment on Safe Assignment

Comments

The real safe assignment that I want to see is for optional chaining to be valid in LHS of assignments:

    foo?.bar = 42;
This would not perform the assignment if an optionally chained value was nullish. It downlevels to
    foo == null ? undefined : foo.bar = 42;
Given that the assignment is a SyntaxError now, this should be possible.

You can avoid the SyntaxError by abusing boolean expressions a bit:

  > obj = {}
  {}
  > obj != null && (obj.bar = 42)
  42
  > obj
  { bar: 42 }
Not as pretty as your LHS case, but it works.

With the length of that you might as well do:

    if (obj) obj.bar = 42

Would it evaluate the RHS? It feels like it shouldn’t, but somehow that seems weird too.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.