๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ฐ˜์‘ํ˜•

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ปSTUDY/JavaScript

(13)
[JavaScript] ๋น„๊ตฌ์กฐํ™”(๊ตฌ์กฐ๋ถ„ํ•ด) ํ• ๋‹น ๋ณดํ˜ธ๋˜์–ด ์žˆ๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค.
[JavaScript] e.target , e.currentTarget e.target , e.curentTarget ์ฐจ์ด์  ๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด, e.target :: ์‹ค์ œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์š”์†Œ (๋‚˜๋งŒ ์ด๋ฒคํŠธ ๋ฐœ์ƒ) e.currentTarget :: ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๊ฐ€ ๋‹ฌ๋ฆฐ ์š”์†Œ (์ž์‹ ํด๋ฆญํ•ด๋„ ๋ถ€๋ชจ๋„ ์ด๋ฒคํŠธ ์œ„์ž„) outer inner button const outer = document.getElementById('outer'); const inner = document.getElementById('inner'); const button = document.getElementById('button'); function printLog(e) { const { target, e.currentTarget } = e; console.log(`target: ${target.id}, ..
[JavaScript] ์ฐธ์กฐ์— ์˜ํ•œ ๊ฐ์ฒด ๋ณต์‚ฌ ์ฐธ์กฐ์— ์˜ํ•œ ๊ฐ์ฒด๋ณต์‚ฌ ๊ฐ์ฒด์™€ ์›์‹œํƒ€์ž…์˜ ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด ์ค‘ ํ•˜๋‚˜๋Š” ๊ฐ์ฒด๋Š” '์ฐธ์กฐ์— ์˜ํ•ด(by reference)' ์ €์žฅ๋˜๊ณ  ๋ณต์‚ฌ๋œ๋‹ค. ์›์‹œ๊ฐ’(๋ฌธ์ž์—ด, ์ˆซ์ž, ๋ถˆ๋ฆฐ ๊ฐ’)์€ '๊ฐ’ ๊ทธ๋Œ€๋กœ' ์ €์žฅ·ํ• ๋‹น๋˜๊ณ  ๋ณต์‚ฌ๋œ๋‹ค. let message = 'Hello'; let cloneMessage = message; cloneMessage = 'CloneHello'; console.log(message, cloneMessage); // Hello CloneHello ๊ฐ์ฒด๊ฐ€ ํ• ๋‹น๋œ ๋ณ€์ˆ˜๋ฅผ ๋ณต์‚ฌํ•˜๋ฉด ๋™์ผํ•œ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ ๊ฐ’์ด ํ•˜๋‚˜ ๋” ๋งŒ๋“ค์–ด์ง„๋‹ค. let user = { name: 'John'; } let admin = user; admin.name = ..
[JavaScript] ๊ฐ์ฒด ์ƒ์ˆ˜๊ฐ์ฒด const๋กœ ์„ ์–ธ๋œ ๊ฐ์ฒด๋Š” ์ˆ˜์ • ๋  ์ˆ˜ ์žˆ๋‹ค. const user = { name: 'John' }; user.name = 'Pete'; console.log(user.name); // Pete const๋Š” ํ•œ ๋ฒˆ์ด๋ผ๋„ ๊ฐ’์„ ํ• ๋‹นํ•œ ๋ณ€์ˆ˜๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฑธ ๋ง‰๋Š”๋‹ค. ๋ณ€์ˆ˜ user๋Š” ๊ฐ์ฒด ์ฐธ์กฐ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š”๋ฐ, const๋Š” ์ด ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋Š”๊ฑธ ๋ง‰๋Š” ๊ฒƒ์ด์ง€, ๊ฐ์ฒด์˜ ๋‚ด์šฉ (ํ”„๋กœํผํ‹ฐ)์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฑด ๋ง‰์ง€์•Š๋Š”๋‹ค. ๊ณ„์‚ฐ๋œ ํ”„๋กœํผํ‹ฐ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ๋•Œ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ์•ˆ์˜ ํ”„๋กœํผํ‹ฐ ํ‚ค๊ฐ€ ๋Œ€๊ด„ํ˜ธ๋กœ ๋‘˜๋Ÿฌ์‹ธ์—ฌ ์žˆ์„ ๊ฒฝ์šฐ, ์ด๋ฅผ ๊ณ„์‚ฐ๋œ ํ”„๋กœํผํ‹ฐ (computed propery) ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. let fruit = prompt('์–ด๋–ค ๊ณผ์ผ์„ ๊ตฌ๋งคํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?', 'appl..
[JavaScript] nullish ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž ?? nullish ๋ณ‘ํ•ฉ์—ฐ์‚ฐ์ž ?? ์ตœ๊ทผ์— ์ถ”๊ฐ€๋จ. ์ŠคํŽ™์— ์ถ”๊ฐ€๋œ์ง€ ์–ผ๋งˆ์•ˆ๋œ ๋ฌธ๋ฒ•. ๊ตฌ์‹ ๋ธŒ๋ผ์šฐ์ €๋Š” ํด๋ฆฌํ•„์ด ํ•„์š”ํ•˜๋‹ค. nullsh ๋ณ‘ํ•ฉ์—ฐ์‚ฐ์ž(nullish coalescing operator) ??๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์งง์€ ๋ฌธ๋ฒ•์œผ๋กœ ์—ฌ๋Ÿฌ ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ๊ทธ ๊ฐ’์ด ํ™•์ •๋˜์–ด ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. a ?? b ์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. a๊ฐ€ null๋„ ์•„๋‹ˆ๊ณ  undefined๋„ ์•„๋‹ˆ๋ฉด a ๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ b nullish ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž ??์—†์ด x = a ?? b์™€ ๋™์ผํ•œ ๋™์ž‘์„ ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. x = (a !== null && a !== undefined) ? a : b; ??์™€ ||์˜ ์ฐจ์ด ||๋Š” ์ฒซ ๋ฒˆ์งธ truthy๊ฐ’์„ ๋ฐ˜ํ™˜. ??๋Š” ์ฒซ ๋ฒˆ์งธ ์ •์˜๋œ(defined) ๊ฐ’์„ ๋ฐ˜ํ™˜. null๊ณผ un..
[JavaScript] return์ด ํ•˜๋Š” ์ผ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ. ์ง€์—ญ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์•„๋Š”๋ฐ ์‚ฌ์šฉ. ํ˜„์žฌ ์ง„ํ–‰์ค‘์ธ ํ•จ์ˆ˜๋ฅผ ์ค‘์ง€(escape). 1. ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ + 2. ์ง€์—ญ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์•„๋Š”๋ฐ ์‚ฌ์šฉ. [์˜ˆ์ œ1] var test = function() { var x = 1; } test(); console.log(test()); // undefined ์œ„์˜ ํ•จ์ˆ˜๋Š” ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค. ๋‚ด๋ถ€ ๊ตฌ๋ฌธ๋“ค์„ ์‹คํ–‰(test())ํ•˜์˜€์œผ๋‚˜ ๋ฐ˜ํ™˜ํ•  ๊ฐ’์ด ์„ ์–ธ๋˜์ง€ ์•Š์•˜๋‹ค. x๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด์„  return์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•œ๋‹ค. var test = function() { var x = 1; return x; } var test2 = test(); console.log(test2); test() ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ๊ฒฝ์šฐ ํ•ด๋‹นํ•จ์ˆ˜๋Š” 1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋ฐ˜ํ™˜๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ธฐ ..
[JS] script async/defer *parsing :: https://solog4something.tistory.com/13 (+)21.10.26 ์ถ”๊ฐ€ ํŒŒ์‹ฑ์€ ํ•ด๋‹น ์–ธ์–ด์˜ ๋ฌธ๋ฒ•๊ฒ€์‚ฌ๊ธฐ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋„คํŠธ์›Œํฌ๋กœ ๋ฐ›์€ HTML๊ณผ CSS ํŒŒ์ผ์„ ํ† ํฐํ™” ์‹œํ‚ค๊ณ  Parse Tree๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ด Parse Tree๋ฅผ DOM ํŠธ๋ฆฌ๋กœ ๋งŒ๋“ค์–ด ๋ Œ๋”ํ•˜๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ HTML์„ ํ™”๋ฉด์— ๋ณด์ด๊ธฐ ์œ„ํ•ด ํŒŒ์‹ฑํ•˜๋Š” ๋„์ค‘์— ํŒŒ์‹ฑ์„ ๋ฉˆ์ถ”๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์•„๋ž˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ณด์ž. script ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” *parser blocking resource(ํŒŒ์„œ ์ฐจ๋‹จ ๋ฆฌ์†Œ์Šค)์ด๋‹ค. ๊ธฐ๋ณธ ๋ชจ๋“œ๋กœ ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑํ•ด ์ฝ๋‹ค๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋‚˜๋ฉด ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์—ˆ๋˜ ํŒŒ์‹ฑ์„ ๋ฉˆ์ถ”๊ณ , ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค์šด > ํŒŒ์‹ฑ > ์‹คํ–‰ ํ•œ ํ›„ ๋‹ค์‹œ HTML ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑํ•˜๊ฒŒ ๋œ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๋Š” ..
[JavaScript / ES6] let, const์™€ ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„ ES5๊นŒ์ง€ var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ํŠน์ง•์ด ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Š” ๋‹ค๋ฅธ ์–ธ์–ด์™€๋Š” ๋‹ค๋ฅธ ํŠน์ง•์œผ๋กœ ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ด์ง€ ์•Š์œผ๋ฉด ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚จ๋‹ค. ํ•จ์ˆ˜ ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„(Function-level Scope) ํ•จ์ˆ˜์˜ ์ฝ”๋“œ ๋ธ”๋ก๋งŒ ์Šค์ฝ”ํ”„ ์ธ์ •. ๋”ฐ๋ผ์„œ ์ „์—ญ ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ ์ƒ์„ฑํ•œ ๋ณ€์ˆ˜๋Š” ๋ชจ๋‘ ์ „์—ญ ๋ณ€์ˆ˜์ด๋‹ค. ์ด๋Š” ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ๋‚จ๋ฐœํ•  ๊ฐ€๋Šฅ์„ฑ์„ ๋†’์ธ๋‹ค. for ๋ฌธ์˜ ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์—์„œ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋ฅผ for ๋ฌธ์˜ ์ฝ”๋“œ ๋ธ”๋ก ์™ธ๋ถ€์—์„œ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค. var ํ‚ค์›Œ๋“œ ์ƒ๋žต ํ—ˆ์šฉ ์•”๋ฌต์  ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ๋‚จ๋ฐœํ•  ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๋‹ค. ๋ณ€์ˆ˜ ์ค‘๋ณต ์„ ์–ธ ํ—ˆ์šฉ ์˜๋„ํ•˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๊ฐ’์˜ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜ ํ˜ผ๋ž€์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค. ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ… ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ธฐ ์ด์ „์— ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค. ES6๋Š” ์ด๋Ÿฌํ•œ var ํ‚ค์›Œ๋“œ์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด let..

๋ฐ˜์‘ํ˜•