markerikson / marks-dev-blog-comments

Comments for my blog
4 stars 0 forks source link

How Web Apps Work: JavaScript and the DOM #53

Open utterances-bot opened 2 years ago

utterances-bot commented 2 years ago

How Web Apps Work: JavaScript and the DOM · Mark's Dev Blog

https://blog.isquaredsoftware.com/2020/11/how-web-apps-work-javascript-dom/

abmi108 commented 2 years ago

Fantastic resource. Thank you for putting in the effort. Just wanted to point out some of the typos I noticed here (correct me if I am wrong) since I couldn't find a corresponding repo.

Apart from that amazing read. Thank You!

markerikson commented 2 years ago

Thanks for pointing these out!

MarcosNASA commented 2 years ago

Hey, Mark! Awesome content! I'm gonna start recommending this as a starting point for folks who are jumping from any language to JS. :tada:

However, there's something around scope that confused me a bit:

let and const are block-scoped - they only exist within the curly braces block where they're declared, and the same variable name can be reused and shadowed inside of nested blocks. var is function-scoped - no matter where it's used, the declaration is hoisted to act as if it was written on the first line of the function it's inside, and reusing the same name will override the earlier declaration.

Indeed, let and const "can be reused and shadowed inside of nested blocks", but also var can (when the nested blocks are functions)! Instead, it kinda sounds as if anytime you use the same name for a var-declared variable it will override any previous. Counter-example:

var x = 0
;(function() { var x = 3 })()
console.log(x)

Might just be me, though, but I think that stating that any variable declarator can shadow each other in nested scope-bounding-blocks but that, within the same scope-bounding-block, only var allows "multiple declarations" (explaining that scope-bounding-blocks means any block for const and let and only functions for var) makes the point clearer.

Anyway, thanks for your work!

ghost commented 1 year ago

The link to Immer is broken. Thank you for all of this by the way : )