๋ชฉ๋กDEV_IN/JavaScript (6)

let's get IT with DAVINA ๐Ÿ’ป

[Inside JavaScript] Chapter 1. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ณธ ๊ฐœ์š”

1.1 ์†Œ๊ฐœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ž‘ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์ด๋‹ค. ์ฒ˜์Œ์—” ์›น ํŽ˜์ด์ง€ ์ œ์ž‘์— ์žˆ์–ด์„œ ๋ณด์กฐ์ ์ธ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„๋กœ์จ ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ๋ชฉ๋ฐ›์ง€ ๋ชปํ–ˆ๋˜ ์–ธ์–ด..๐Ÿฅฒ BUT, prototype.js์™€ ๊ฐ™์€ ์ฃผ์š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ๊ฐœ๋ฐœ๋˜๊ณ  && jQuery์˜ ๋“ฑ์žฅ์œผ๋กœ ๋ณด๋‹ค ์‰ฝ๊ฒŒ DOM(Document Object Model)์„ ํ•ธ๋“ค๋งํ•˜๊ฒŒ ๋˜๋ฉด์„œ ๋งŽ์€ ๋ฐœ์ „์„ ์ด๋ฃจ์—ˆ๋‹ค. 1.2 ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ™œ์šฉ ๋ฒ”์œ„ 1.2.1 ์›น ๊ฐœ๋ฐœ ํฌ๋กฌ์ด๋‚˜ ํŒŒ์ด์–ดํญ์Šค ๋“ฑ ์›น ๋ธŒ๋ผ์šฐ์ €๋“ค์ด ๋‚˜๋‚ ์ด ๋ฐœ์ „ํ•˜๋ฉด์„œ ์ƒˆ๋กœ์šด ๋ฒ„์ „์„ ๋‚ด๋†“์„๋•Œ๋งˆ๋‹ค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๊ฐ•์กฐํ•œ๋‹ค. ์ด๋Š” ์›น ํŽ˜์ด์ง€ ๊ฐœ๋ฐœ์— ์žˆ์–ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์—ญํ• ์ด ์–ผ๋งˆ๋‚˜ ํฐ์ง€๋ฅผ ๋ฐฉ์ฆํ•œ๋‹ค. 1.2.2 ์„œ๋ฒ„ ๊ฐœ๋ฐœ Node.js์˜ ์ถœํ˜„์œผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ™œ์šฉํ•œ ์„œ๋ฒ„ ๊ฐœ๋ฐœ๋„ ํ™œ..

DEV_IN/JavaScript 2023. 3. 27. 18:20
This

JS์—์„œ this๋Š” ์™œ ์–ด๋ ค์šธ๊นŒ? ๋‹ค๋ฅธ ์–ธ์–ด๋“ค์—์„œ this๋Š” ๋งŒ๋“ค์–ด์ง„ ๊ฐ์ฒด ์ž๊ธฐ ์ž์‹ ์„ ๋œปํ•˜์ง€๋งŒ, JS์—์„  ๋‹ค๋ฅด๋‹ค! JS์—์„œ this๋Š” ์š”์ˆ ๋žจํ”„ ์ง€๋‹ˆ๋‹ค!! ๋ˆ„๊ฐ€ ํ˜ธ์ถœํ–ˆ๋ƒ์— ๋”ฐ๋ผ ๋ˆ„๊ตฌ์˜ ์ง€๋‹ˆ์ธ์ง€ ๋™์ ์œผ๋กœ ๋‹ฌ๋ผ์ง„๋‹ค. This 1. ๋ธŒ๋ผ์šฐ์ € ์ „์—ญ์Šค์ฝ”ํ”„์—์„œ console.log(this) result : window ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ด reason : ๋ธŒ๋ผ์šฐ์ € ์ „์—ญ ๊ฐ์ฒด๊ฐ€ window์ด๊ธฐ ๋•Œ๋ฌธ์— 2. function(){} ๋‚ด๋ถ€์—์„œ this ํ˜ธ์ถœ result : window ๊ฐ์ฒด๊ฐ€ ๋‚˜์˜ด reason : 'ํ•จ์ˆ˜'๋Š” ์„ ์–ธ ์‹œ window ๊ฐ์ฒด์— '๋“ฑ๋ก'๋จ. ์ด ํ•จ์ˆ˜๋Š” class์— ์†ํ•œ ๊ฒƒ๋„ ์•„๋‹ˆ๊ณ , ์ „์—ญ ์Šค์ฝ”ํ”„์—์„œ ํ˜ธ์ถœ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— this๊ฐ€ ์†ํ•œ ๊ณณ์€ window ๊ฐ์ฒด์ž„. ๋”ฐ๋ผ์„œ, window.simpleFun()๋กœ๋„..

DEV_IN/JavaScript 2023. 2. 28. 18:35
Prototype

TypeScript๋ฅผ ๋ฐฐ์šฐ๋ฉด์„œ ๊ฒฐ๊ตญ, ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ superset์ธ๋ฐ ๊ทธ๋Ÿฌ๋ ค๋ฉด JavaScript ๊ฐœ๋…์„ ์กฐ๊ธˆ ๋” ์ •๋ฆฌ ํ•  ํ•„์š”์„ฑ์„ ๋Š๊ผˆ๋‹ค๋นˆ Prototype์€ JS์˜ ์ƒ์† ๊ธฐ๋Šฅ, ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค!!! Prototype TS๋Š” ์•„๋ž˜์™€๊ฐ™์ด JS์˜ superset์ž…๋‹ˆ๋‹ค. JS์—์„  ์—†์—ˆ๋˜, class, interface, generics, types ๋“ฑ์„ ์ด์šฉํ•ด์„œ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค. BUT, JS๋„ ์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด proto-based๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด ์ง€ํ–ฅ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ, ES6๋ถ€ํ„ฐ๋Š” class๋ฅผ ์ด์šฉํ•ด์„œ ํ”„๋กœํ† ๋ฅผ ๊ธฐ๋ฐ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Prototype์€ ์ƒ์†์„ ์œ„ํ•ด ์“ฐ์ด๋Š” ์•„์ด์ž…๋‹ˆ๋‹ค! ์šฐ๋ฆฌ๊ฐ€ Class๋ฅผ ์ด์šฉํ•ด์„œ ์ƒ์†์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ..

DEV_IN/JavaScript 2023. 2. 28. 17:24
JavaScript Event Loop๋ž€?

MDN์— ๋”ฐ๋ฅด๋ฉด, ์ด๋ฒคํŠธ ๋ฃจํ”„๋ž€, "JS์˜ ๋Ÿฐํƒ€์ž„ ๋ชจ๋ธ์€ ์ฝ”๋“œ์˜ ์‹คํ–‰, ์ด๋ฒคํŠธ์˜ ์ˆ˜์ง‘๊ณผ ์ฒ˜๋ฆฌ, ํ์— ๋Œ€๊ธฐ ์ค‘์ธ ํ•˜์œ„ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ด๋ฒคํŠธ ๋ฃจํ”„์— ๊ธฐ๋ฐ˜ํ•˜๊ณ  ์žˆ๋‹ค" ๋ผ๊ณ  ๋‚˜์˜จ๋‹ค.. ๋ฌด์Šจ๋ง์ธ์ง€ ๋„ํ†ต ๋ชจ๋ฅด๊ฒ ์œผ๋‹ˆ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์˜ ์‹คํ–‰ ์›๋ฆฌ๋ฅผ ์‚ด์ง ์•Œ์•„๋ณด์ž JavaScript, what r u? ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ์–ธ์–ด์ด๋‹ค. ๋ญ”๋ง์ด๋ƒ? โ–ท ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์€ ๋™์‹œ์— ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. one thread === one call stack === one thing at a time (๋ฉ€ํ‹ฐ๊ฐ€ ์•ˆ๋ผ!!) ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ Memory Heap & Call Stack์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. (๊ฐ€์žฅ ์œ ๋ช…ํ•œ ๊ฒƒ์ด ๊ตฌ๊ธ€์˜ V8 Engine) Memory Heap : ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์ผ์–ด๋‚˜๋Š” ์žฅ์†Œ ex) ์šฐ๋ฆฌ๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์—..

DEV_IN/JavaScript 2023. 2. 22. 18:25