Hacker News new | ask | show | jobs
by squeaky-clean 1593 days ago
Not the developer but nice catch. const match would be null, not undefined, if the regex search does not match, right?
1 comments

In a browser console:

> const match = /^\/[js]\/(\d+)\/?$/.exec("something")

> undefined

The assignment to match returns undefined. The value of match is null.
To be pedantic the assignment returns null (always returns the rvalue[1]), it's the const statement that produces undefined[2]

[1] https://tc39.es/ecma262/multipage/ecmascript-language-statem... [2] https://tc39.es/ecma262/multipage/ecmascript-language-statem...

And to be even more pedantic, the function works because it is applied on an event listener... When null[1] is evaluated (in the right side of the || of the conditional), it produces a TypeError... which in effect (due to no catch and evaluation continuing in a parent/event-driven scope) is essentially equivalent to an empty return in this specific context.

What fun! :-)

Edit: apparently as also mentioned https://news.ycombinator.com/item?id=30268412

Run just /^\/[js]\/(\d+)\/?$/.exec("something") in the console