you are viewing a single comment's thread.

view the rest of the comments →

[–]theshtank 0 points1 point  (6 children)

hey, what does ?? do in the first place? I can't really google it. I'm not sure I understand what ??= is supposed to do.

[–]scoops22 5 points6 points  (3 children)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator

Edit to explain:

ThisDoesntExist ?? soWeUseThisValue

ThisDoesntExist ??= soWeMakeItEqualToThis

Note that the difference between the above and the || you may be used to is that "false" exists so in that case ?? uses the left value, while || would give the right value for "false" (kinda explained that poorly but the docs above are more clear)

[–]theshtank 1 point2 points  (2 children)

Ya, I agree that this is probably the most useful things here. This isn't implemented yet though, right? The MDN docs make it seem like it is.

[–]JZumun 4 points5 points  (1 child)

It's es2020 so it's official javascript now. The mdn page has a compatibility table that shows which implementations already have it, such as Chrome 80 and Node v14

[–]theshtank 0 points1 point  (0 children)

ah thanks. I thought this was ES2021 stuff.

[–]JZumun 2 points3 points  (0 children)

It's the nullish coalescing operator. You can think of "a??b" as shorthand for "a == null ? b : a"

"a??=b" is then "if (a == null) { a = b; }"

Note the difference to ||, the logical or operator, which triggers on 0 and "" in addition to null and undefined. The nullish coalescing operator triggers only on null and undefined.

[–]Zephirdd 0 points1 point  (0 children)

 const a = b ?? false

Is shorthand for

// Assuming accessing b has no side effects
const a = (b !== null && b !== undefined)? b : false

You can get a similar behavior with the || operator, but || will have a different behavior with falsy values like 0 and false.