Constructor brackets are optional
const newDate = new Date(); // valid
const myClass = new MyClass(); // valid
const anotherDate = ne...
For further actions, you may consider blocking this person and/or reporting abuse
That thing with
arguments[]
array was new to me! Thanks :). dev.to is a really refreshing breeze after StackOverflow experience.I'm glad you discovered something new! Keeps me motivated to write. Thanks for reading โฅ๏ธ
Note that arrow functions do not have an arguments object.
This is such an oversight from me. Thanks for catching it. I wrote a full blog post on arrow functions and how they behave differently with
this
,new
andarguments
. I missed it here. I'll update.Thanks for reading โฅ๏ธ
Optional Chaining made it into ES2020, and it's implemented in all major browsers now (caniuse.com/#feat=mdn-javascript_o...)!
Still shows in Stage 4 (Draft).
tc39.es/proposal-optional-chaining/
github.com/tc39/proposal-optional-...
Idk how those pages get updated, but there's no doubt it made it into ES2020: 2ality.com/2019/12/ecmascript-2020...
TC39 is the committee that handles ES proposals and specifications.
That being said your article does lead to what I was eventually looking for
tc39.es/ecma262/2020/
Looks like it is in the final document. I will update the post. Thanks for the awesome feedback โฅ๏ธ
Yeah I know about TC39, I just meant that I don't know at what point on the process those specific pages get updated; I would have thought it would be after ES2020 is finalized and released, but apparently not
Great post. Slight nit:
new Date().toString() // works
new Date.toString() // fails
I am so glad you brought this up. I would love to explain this! There is a reason why this works:
And this does not
It's because
new Date.toString()
is not equal tonew Date().toString()
. *There is an extremely subtle difference. They have different precedence. *Check out: developer.mozilla.org/en-US/docs/W...
new Date.toString()
throws an error because.
has higher precedence thannew Date
so the expression becomes (or it is resolved as)(new (Date.toString))()
. They might look same but they are evaluated differently!In short, if you would like to invoke the constructor and chain it with a method in the object, the correct syntax is:
Give it a try๐
That's pretty amazing thanks!
So when chaining you dont save typing the parentheses, they can just go in two different places :)