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

๐ŸŒŒ | WEB DEV115

JS_๊ธฐ์ˆ  (2)_ IIFE(์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜ ํ‘œํ˜„) JS์—์„œ ์‚ฌ์šฉํ•˜๋Š” IIFE์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. ์˜ค๋Š˜๋‚ ์—๋Š” ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ ๊ณผ๊ฑฐ์— ์‚ฌ์šฉํ–ˆ๋˜ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์•Œ์•„๋ณด์ž! 1. IIFE๋ž€? ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜ ํ‘œํ˜„(Immediately Invoked Function Expression, IIFE)์€ ์ •์˜๋˜์ž๋งˆ์ž ์ฆ‰์‹œ ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งํ•œ๋‹ค. ๊ตฌ์กฐ (function() { ... }) (); Self-Executing Anonymous Function ์œผ๋กœ ๋ถˆ๋ฆฌ๋Š” ๋””์ž์ธ ํŒจํ„ด์ด๋ผ๊ณ  ํ•œ๋‹ค. ์—ฌ๊ธฐ์—์„œ๋Š” ๋‘ ๊ฐœ์˜ ๊ด„ํ˜ธ์— ์ฃผ๋ชฉ์„ ํ•ด์•ผํ•œ๋‹ค. ๋จผ์ €, ์ต๋ช…ํ•จ์ˆ˜๋ฅผ ๋‘˜๋Ÿฌ์‹ผ ๊ด„ํ˜ธ์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด์„œ ์ „์—ญ Scope์˜ ๋ถˆํ•„์š”ํ•œ ๋ณ€์ˆ˜๋“ค์— ์˜ํ•œ ์˜ค์—ผ ๋ฐฉ์ง€์™€ IIFE ๋‚ด๋ถ€ ์•ˆ์œผ๋กœ ๋‹ค๋ฅธ ๋ณ€์ˆ˜๋“ค์ด ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ ๋‹ค์Œ์œผ๋กœ๋Š” ํ›„๋ฏธ์— ์œ„์น˜ํ•˜๋Š” ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜.. 2023. 3. 16.
JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ• (22)_ ๋งค๊ฐœ๋ณ€์ˆ˜ (๊ธฐ๋ณธ๊ฐ’, arguments, ๋‚˜๋จธ์ง€ ๋ณ€์ˆ˜, ์ด์ƒ์ ์ธ ํ•จ์ˆ˜?) JS ๋‹ค๋ฃจ๋Š” ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•ด์„œ ์‚ดํŽด๋ณด์ž. 1. ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐœ์ˆ˜๋ณด๋‹ค ๋งŽ์ด ๊ฐ’์„ ์ „๋‹ฌํ•œ ๊ฒฝ์šฐ ์˜ˆ์‹œ 1) ๋‘ ๊ฐœ์˜ ์ธ์ž๋ฅผ ๋ฐ›๋Š” ํ•จ์ˆ˜์ด๋‹ค. function sum(a, b){ return a + b; } console.log( sum(1, 2), sum(1, 2, 3), sum(1, 2, 3, 4) ); >>> 3 3 3 ์œ„์˜ ๊ฒฐ๊ณผ์ฒ˜๋Ÿผ JS์—์„œ๋Š” ๋‹ค๋ฅธ ์–ธ์–ด์™€ ๋‹ค๋ฅด๊ฒŒ ํ•จ์ˆ˜ ์ •์˜ ์‹œ ์„ค์ •ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜๋ณด๋‹ค ๋งŽ์ด ๊ฐ’์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒฝ์šฐ ์ˆœ์„œ๋Œ€๋กœ ๊ฐ’์„ ๋ฐ›์€ ํ›„ ๋‚˜๋จธ์ง€๋Š” ๋ฌด์‹œํ•˜๋ฉฐ ์˜ค๋ฅ˜๋ฅผ ์ผ์œผํ‚ค์ง€ ์•Š๊ณ  ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 2. ๊ธฐ๋ณธ๊ฐ’ ๊ธฐ๋ณธ๊ฐ’(default parameter)์€ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๊ฐ’์ด ๋“ค์–ด์˜ค์ง€ ์•Š์•„๋„ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ’์„ ์„ค์ •ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. function sum(a = 0, b = 0){ return a + .. 2023. 3. 12.
JS_๊ธฐ์ˆ  (1)_ ์ปค๋ง(currying) JS์— ์กด์žฌํ•˜๋Š” ์ปค๋ง์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. 1. ์ปค๋ง์ด๋ž€? ์ปค๋ง์€ ํ•จ์ˆ˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ณ ๊ธ‰๊ธฐ์ˆ ๋กœ, JS ๋ฟ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ํ•„์š”ํ•œ ์ธ์ž๋ณด๋‹ค ์ ์€ ์ˆ˜์˜ ์ธ์ž๋ฅผ ๋ฐ›์œผ๋ฉด, ๋‚˜๋จธ์ง€ ์ธ์ž๋ฅผ ์ธ์ž๋กœ ๋ฐ›๋Š” ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ฆ‰, ํ•œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ธ์ž๊ฐ€ ์•„์ง ๋œ ์ค€๋น„ ๋˜์—ˆ์„ ๊ฒฝ์šฐ ํ˜„์žฌ ์กด์žฌํ•˜๋Š” ์ธ์ž๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ปค๋ง์œผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ์‹œ 1) ์•„๋ž˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•œ ๊ฒฝ์šฐ์ด๋‹ค. function mulTwoTerm (a, b, c, d) { return (a + b) * (c + d); } const mulTwoTerm2 = (a, b, c, d) => (a + b) * (c + d); console.log( mulTwoTerm(1, 2, 3, 4.. 2023. 3. 11.
JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ• (21)_ ์ผ๊ธ‰ ๊ฐ์ฒด JS์˜ ์ผ๊ธ‰ ๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž! ์ผ๊ธ‰ ๊ฐ์ฒด (First Class Object) ํ•จ์ˆ˜๋ฅผ ๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜์˜ ๊ฐ’์ฒ˜๋Ÿผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด์— ์กด์žฌํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค. JS์˜ ํ•จ์ˆ˜๋„ ์ด์— ์†ํ•œ๋‹ค. (JS์˜ ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด์˜ ํ•œ ์ข…๋ฅ˜์ด๋‹ค.) ํŠน์ง• 1. ์ƒ์ˆ˜/๋ณ€์ˆ˜์— ํ• ๋‹น๋  ์ˆ˜ ์žˆ๋‹ค. 2. ๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ๋‹ค. 3. ๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๊ฐ’์œผ๋กœ์„œ ๋ฐ˜ํ™˜๋  ์ˆ˜ ์žˆ๋‹ค. 1. ํ• ๋‹น ๋ณ€์ˆ˜/์ƒ์ˆ˜์— ํ•จ์ˆ˜๋ช…์„ ์‹๋ณ„์ž๋กœ ๋„ฃ์–ด์„œ ํ• ๋‹น์‹œํ‚จ๋‹ค. ์ด๋•Œ ์ฃผ์˜ํ•  ์ ์€ ๊ด„ํ˜ธ๋ฅผ ๋ถ™์ด์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค. (๊ด„ํ˜ธ๋ฅผ ๋ถ™์ด๋ฉด ํ•จ์ˆ˜ ์‹คํ–‰ ํ›„ ๋ฐ˜ํ™˜ ๊ฒฐ๊ณผ๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ) ์˜ˆ์‹œ 1) function isOdd (num) { console.log( (num % 2 ? 'ํ™€' : '์ง') + '์ˆ˜' ); return num % 2 ? true : false; }; .. 2023. 3. 11.
JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ• (20)_ for ๋ฃจํ”„+ 2022.02.11 - [๐ŸŒŒ | WEB DEV/Vanilla JS] - JS_๊ธฐ๋ณธ๋ฌธ๋ฒ• (4)_๋ฐ˜๋ณต๋ฌธ ๋ฐ˜๋ณต๋ฌธ ์ค‘ for ๋ฌธ์— ๋Œ€ํ•ด์„œ ์กฐ๊ธˆ ๋” ์•Œ์•„๋ณด์ž ๊ตฌ์กฐ for ([initialization]; [condition]; [final-expression]){ ... } ๊ด„ํ˜ธ ์•ˆ 3๊ฐœ์˜ ์‹ initialization ์‹ ๋˜๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ๋‹ค. ์ฃผ๋กœ ์นด์šดํ„ฐ์— ์‚ฌ์šฉํ•  ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. (์ƒ์ˆ˜ ์„ ์–ธ ์‹œ ์ฆ๊ฐ ๋ถˆ๊ฐ€) condition ๋งค ๋ฐ˜๋ณต ๋งˆ๋‹ค ํ‰๊ฐ€ํ•  ์กฐ๊ฑด์„ ์„ธ์šด๋‹ค. ํ‰๊ฐ€ ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ์ผ ๊ฒฝ์šฐ ์ˆ˜ํ–‰๋ฌธ์„ ์‹คํ–‰ํ•œ๋‹ค. ๊ฑฐ์ง“์ผ ๊ฒฝ์šฐ for๋ฌธ์„ ํƒˆ์ถœํ•œ๋‹ค. ๋งŒ์•ฝ ๋น„์–ด์žˆ๋Š” ๊ฒฝ์šฐ ํ•ญ์ƒ ์ฐธ์ด๋‹ค. final-expression ๋งค ๋ฐ˜๋ณต์˜ ๋์— ์ˆ˜ํ–‰๋˜๋Š” ์‹์ด๋‹ค. ์ฃผ๋กœ ์นด์šดํ„ฐ ๋ณ€์ˆ˜์˜ ์ฆ๊ฐ์— ์‚ฌ์šฉ๋œ๋‹ค. (condition ์ด์ „์— ์‹คํ–‰) .. 2023. 3. 8.
JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ• (19)_ case๋ฌธ, ๊ฐ์ฒด ํ™œ์šฉ ๋ณ€ํ˜• case๋ฌธ JS์—์„œ ํ™œ์šฉํ•˜๋Š” case๋ฌธ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž 1. case๋ฌธ ํŠน์ • ๊ฐ’์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ์˜ต์…˜์ด ์กด์žฌํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. const option = 1; switch (option) { case 1: console.log('1๋ฒˆ'); break; case 2: console.log('2๋ฒˆ'); break; case 3: console.log('3๋ฒˆ'); break; default: console.log('๋ฌดํšจ'); } >>> 1๋ฒˆ switch ~ case ๋ฌธ์„ ์ด์šฉํ•œ ์˜ˆ์‹œ๋Š” ์œ„์™€ ๊ฐ™๋‹ค. break ์ฃผ์˜ํ•  ์ ์€ break ์ด๋‹ค. break๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ํ•ด๋‹น case์˜ ๋‹ค์Œ case๊นŒ์ง€ ์—ฐ์†์ ์œผ๋กœ ์ˆ˜ํ–‰์ด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์„ค๊ณ„์˜๋„๋Œ€๋กœ ์ˆ˜ํ–‰๋˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. defalut defalut๋Š”.. 2023. 3. 7.
JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ• (18)_ ์ œ์–ด๋ฌธ๊ณผ ์ข‹์€ ์ฝ”๋“œ? JS์—์„œ ์ œ๊ณตํ•˜๋Š” if/else๋ฌธ์„ ์ด์šฉํ•˜๋ฉด ์›ํ•˜๋Š” ์กฐ๊ฑด์— ๋งž์ถ”์–ด ์—ฐ์‚ฐ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. const x = 4; if (x % 2) { console.log('ํ™€์ˆ˜'); } else { console.log('์ง์ˆ˜'); } >>> ์ง์ˆ˜ ์œ„์˜ ์˜ˆ์‹œ๋Š” ์•„์ฃผ ๋‹จ์ˆœํ•œ ํ™€์ง ํŒ๋ณ„ ์ฝ”๋“œ์ธ๋ฐ ์ด๊ฒƒ๋ณด๋‹ค ๋” ๋ณต์žกํ•œ ์กฐ๊ฑด์„ ์ ์šฉํ•œ๋‹ค๋ฉด ๋‹น์—ฐํžˆ๋„ ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์ง„๋‹ค. ๊ทธ์— ๋”ฐ๋ผ ๊ฐ€๋…์„ฑ์ด ๋‚ฎ์€ ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ์‹œ) ํ™€์ˆ˜, ์ง์ˆ˜, 4์˜ ๋ฐฐ์ˆ˜๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ์ฝ”๋“œ 1) if/else๋ฌธ์˜ ์ค‘์ฒฉ์„ ํ™œ์šฉํ•  ๊ฒฝ์šฐ const x = 6; if (x % 4) { if (x % 2) { console.log('ํ™€์ˆ˜'); } else { console.log('์ง์ˆ˜'); } } else { console.log('4์˜ ๋ฐฐ์ˆ˜'); } >>>.. 2023. 3. 4.
JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ• (17)_์Šค์ฝ”ํ”„ JS์—์„œ์˜ ์Šค์ฝ”ํ”„์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž! 1. ๋ธ”๋ก๋ฌธ (Block) ๋ธ”๋ก๋ฌธ์€ 0๊ฐœ ์ด์ƒ์˜ statement(๊ตฌ๋ฌธ)์„ ๋ฌถ์€ ๊ฒƒ์„ ์ด์•ผ๊ธฐํ•˜๊ณ , ํ•œ ์Œ์˜ ์ค‘๊ด„ํ˜ธ(brackets)๋กœ ๊ฐ์‹ธ์ ธ์žˆ๋‹ค. { ... } ์ผ๋ฐ˜์ ์œผ๋กœ ์ œ์–ด๋ฌธ, ํ•จ์ˆ˜ ๋“ฑ์— ์‚ฌ์šฉ์ด ๋˜๊ณ  ๋ธ”๋ก๋ฌธ์€ ์ƒˆ๋กœ์šด ์Šค์ฝ”ํ”„๋ฅผ ์ƒ์„ฑํ•œ๋‹ค 1) ์Šค์ฝ”ํ”„ (Scope) ์Šค์ฝ”ํ”„๋ž€ ๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜, ์‹๋ณ„์ž๋“ค์ด ์œ ํšจํ•˜๊ฒŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋ฅผ ๋งํ•œ๋‹ค. ์ฆ‰, ๋ธ”๋ก๋ฌธ์„ ์ƒ์„ฑํ•  ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ๋ฒ”์œ„๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ํŠน์ง• 1_ ๋ธ”๋ก ์•ˆ์— ์„ ์–ธ๋œ ๋ณ€์ˆ˜์™€ ์ƒ์ˆ˜๋ฅผ ๊ทธ ๋ฐ–์—์„œ ์‚ฌ์šฉ ๋ถˆ๊ฐ€ { let x = 1; console.log(x); } console.log(x); >>> 1 >>> Uncaught ReferenceError: x is not defined ์œ„์˜ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ๋ธ”๋ก ์•ˆ์— ์„ ์–ธ.. 2023. 3. 3.
JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ• (16)_์›์‹œํƒ€์ž…๊ณผ ์ฐธ์กฐํƒ€์ž… JS์—๋Š” ์›์‹œํƒ€์ž…๊ณผ ์ฐธ์กฐํƒ€์ž…์ด ์กด์žฌํ•œ๋‹ค. ๊ทธ ๋‘˜์„ ๊ฐ’์˜ ๋ณต์‚ฌ์˜ ์ธก๋ฉด์—์„œ ๋น„๊ตํ•˜๋ฉฐ ์•Œ์•„๋ณด์ž! 1) ์›์‹œํƒ€์ž… ์›์‹œํƒ€์ž…์€ ๊ฐ’์— ์˜ํ•œ ๋ณต์‚ฌ๊ฐ€ ์ด๋ฃจ์–ด์ง„๋‹ค.(Copy by value) let n1 = 1; let s1 = 'A'; //n1, s1 ๋ณต์‚ฌ let n2 = n1; let s2 = s1; //์ƒˆ๋กœ์šด ๊ฐ’ ํ• ๋‹น n2 = 2; s2 = 'B'; console.log(n1, s1); console.log(n2, s2); >>> 1 'A' >>> 2 'B' ์œ„์˜ ๊ฒฐ๊ณผ์ฒ˜๋Ÿผ ๊ฐ’ ์ž์ฒด๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๋ณต์‚ฌ๋ฅผ ํ•œ ์ดํ›„, ๋ฌด์Šจ ์ง“์„ ํ•˜๋“  ์„œ๋กœ์—๊ฒŒ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค. 2) ์ฐธ์กฐํƒ€์ž… ์ฐธ์กฐํƒ€์ž…์€ '์ฃผ์†Œ๊ฐ’'์ด ๋ณต์‚ฌ๊ฐ€ ๋œ๋‹ค. (Copy by reference) const ob1 = { num : 1, str : 'A' }; /.. 2023. 3. 1.
๋ฐ˜์‘ํ˜•