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

javascript/๐Ÿ“– study39

[7์ฃผ์ฐจ ์Šคํ„ฐ๋””]37์žฅ-Set ๊ณผ Map Set๊ณผ Map Set Set๊ฐ์ฒด๋Š” ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ์œ ์ผํ•œ ๊ฐ’๋“ค์˜ ์ง‘ํ•ฉ์ด๋‹ค. Set๊ฐ์ฒด๋Š” ๋ฐฐ์—ด๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. ๊ตฌ๋ถ„ ๋ฐฐ์—ด Set๊ฐ์ฒด ๋™์ผํ•œ ๊ฐ’์„ ์ค‘๋ณตํ•˜์—ฌ ํฌํ•จ ํ•  ์ˆ˜ ์žˆ๋‹ค O X ์š”์†Œ ์ˆœ์„œ์— ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค. O X ์ธ๋ฑ์Šค๋กœ ์š”์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. O X Set์€ ์ˆ˜ํ•™์  ์ง‘ํ•ฉ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ ์ž…๋‹ˆ๋‹ค, ๊ต์ง‘ํ•ฉ, ํ•ฉ์ง‘ํ•ฉ, ์ฐจ์ง‘ํ•ฉ, ์—ฌ์ง‘ํ•ฉ ๋“ฑ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. Set ๊ฐ์ฒด์˜ ์ƒ์„ฑ Set ์ƒ์„ฑ์ž ํ•จ์ˆ˜์— ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜์ง€ ์•Š์œผ๋ฉด ๋นˆ Set ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ ๋ฉ๋‹ˆ๋‹ค. Set ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋Š” ์ดํ„ฐ๋Ÿฌ๋ธ”์„ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์•„ Set ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. (์ด๋•Œ, ์ค‘๋ณต๋œ ๊ฐ’์€ Set ๊ฐ์ฒด์— ์š”์†Œ๋กœ ์ €์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค.) Set ๊ฐ์ฒด์˜ ํŠน์„ฑ์„ ํ™œ์šฉํ•ด์„œ ๋ฐฐ์—ด์˜ ์ค‘๋ณต๋œ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. const set=.. 2022. 3. 27.
[7์ฃผ์ฐจ ์Šคํ„ฐ๋””]35์žฅ-๋””์ŠคํŠธ๋Ÿญ์ฒ˜๋ง ํ• ๋‹น ๋””์ŠคํŠธ๋Ÿญ์ฒ˜๋ง ํ• ๋‹น ๋””์ŠคํŠธ๋Ÿญ์ฒ˜๋ง ํ• ๋‹น(๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น, destructuring assignment)์€ ๊ตฌ์กฐํ™”๋œ ๋ฐฐ์—ด๊ณผ ๊ฐ™์€ ์ดํ„ฐ๋Ÿฌ๋ธ” ๋˜๋Š” ๊ฐœ์ฒด๋ฅผ destructuringํ•˜์—ฌ 1๊ฐœ ์ด์ƒ์˜ ๋ณ€์ˆ˜์— ๊ฐœ๋ณ„์ ์œผ๋กœ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ๋ฐฐ์—ด๊ณผ ๊ฐ™์€ ์ดํ„ฐ๋Ÿฌ๋ธ” ๋„๋Š” ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์—์„œ ํ•„์š”ํ•œ ๊ฐ’๋งŒ ์ถ”์ถœํ•˜์—ฌ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•  ๋•Œ ์œ ์šฉ ๋ฐฐ์—ด ๋””์ŠคํŠธ๋Ÿญ์ฒ˜๋ง ํ• ๋‹น ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋ฅผ ๋ฐฐ์—ด๋กœ๋ถ€ํ„ฐ ์ถ”์ถœํ•˜์—ฌ 1๊ฐœ ์ด์ƒ์˜ ๋ณ€์ˆ˜์— ํ• ๋‹น ๋””์ŠคํŠธ๋Ÿญ ์ฒ˜๋ง ํ• ๋‹น์˜ ๋Œ€์ƒ(ํ• ๋‹น๋ฌธ์˜ ์šฐ๋ณ€)์€ ์ดํ„ฐ๋Ÿฌ๋ธ”์ด์–ด์•ผ ํ•œ๋‹ค. const arr = [1,2,3]; const [one, two, three] = arr; console.log(one, two, three); // 1 2 3 ํ• ๋‹น์˜ ๊ธฐ์ค€์€ ์ธ๋ฑ์Šค์ด๋‹ค. ์ฆ‰, ์ˆœ์„œ๋Œ€๋กœ ํ• ๋‹น๋˜๊ณ  ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜์™€ ์ผ์น˜ํ•  ํ•„์š”๋Š” ์—†๋‹ค.. 2022. 3. 27.
[7์ฃผ์ฐจ ์Šคํ„ฐ๋””]35์žฅ-์Šคํ”„๋ ˆ๋“œ ๋ฌธ๋ฒ• ์Šคํ”„๋ ˆ๋“œ ๋ฌธ๋ฒ• es6์—์„œ ๋„์ž…๋œ ์Šคํ”„๋ ˆ๋“œ ๋ฌธ๋ฒ• (spread syntax)์€ ํ•˜๋‚˜๋กœ ๋ญ‰์ณ ์žˆ๋Š” ์—ฌ๋Ÿฌ ๊ฐ’๋“ค์˜ ์ง‘ํ•ฉ์„ ํŽผ์ณ์„œ ๊ฐœ๋ณ„์ ์ธ ๊ฐ’๋“ค์˜ ๋ชฉ๋ก์œผ๋กœ ๋งŒ๋“ ๋‹ค. ์Šคํ”„๋ ˆ๋“œ ๋ฌธ๋ฒ• ์‚ฌ์šฉ์˜ ๋Œ€์ƒ์€ for ... of ๋ฌธ์œผ๋กœ ์ˆœํšŒํ•  ์ˆ˜ ์žˆ๋Š” ์ดํ„ฐ๋Ÿฌ๋ธ”์— ํ•œ์ •๋œ๋‹ค. console.log(...[1,2,3]); // 1 2 3 // ์ดํ„ฐ๋Ÿฌ๋ธ”์ด ์•„๋‹Œ ์ผ๋ฐ˜ ๊ฐ์ฒด๋Š” ์Šคํ”„๋ ˆ๋“œ ๋ฌธ๋ฒ•์˜ ๋Œ€์ƒ์ด ๋  ์ˆ˜ ์—†๋‹ค. console.log(...{a : 1, b : 2}); // TypeError : Found non-callable @@iterator ์Šคํ”„๋ ˆ๋“œ ๋ฌธ๋ฒ•์˜ ๊ฒฐ๊ณผ๋Š” ๊ฐ’์ด ์•„๋‹™๋‹ˆ๋‹ค. (์ฆ‰, ... ๋ฌธ๋ฒ•์€ ์ƒˆ๋กœ์šด ๊ฐ’์„ ์ƒ์„ฑํ•˜๋Š” ์—ฐ์‚ฐ์ž๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.) ๋”ฐ๋ผ์„œ ์Šคํ”„๋ ˆ๋“œ ๋ฌธ๋ฒ•์˜ ๊ฒฐ๊ณผ๋Š” ๋ณ€์ˆ˜์— ํ• ๋‹นํ•  ์ˆ˜์—†๋‹ค. ์ •๋ฆฌ : ์Šคํ”„๋ ˆ๋“œ ๋ฌธ๋ฒ•์˜ ๊ฒฐ๊ณผ๋ฌผ์€ ๊ฐ’.. 2022. 3. 27.
[7์ฃผ์ฐจ ์Šคํ„ฐ๋””]34์žฅ-์ดํ„ฐ๋Ÿฌ๋ธ” ์ดํ„ฐ๋Ÿฌ๋ธ” ์ดํ„ฐ๋ ˆ์ด์…˜ ํ”„๋กœํ† ์ฝœ ์ดํ„ฐ๋ ˆ์ด์…˜ ํ”„๋กœํ† ์ฝœ์€ ์ˆœํšŒ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ์ปฌ๋ ‰์…˜์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ECMAScript ์‚ฌ์–‘์— ์ •์˜ํ•˜์—ฌ ๋ฏธ๋ฆฌ ์•ฝ์†ํ•œ ๊ทœ์น™์ด๋‹ค. es6์ด์ „์˜ ์ˆœํšŒ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ์ปฌ๋ ‰์…˜(๋ฐฐ์—ด, ๋ฌธ์ž์—ด ๋“ฑ๋“ฑ..)์€ ํ†ต์ผ๋œ ๊ทœ์•ฝ ์—†์ด ๊ฐ์ž ๋‚˜๋ฆ„์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ es6์—์„œ๋Š” ์ˆœํšŒ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ์ปฌ๋ ‰์…˜์„ ์ดํ„ฐ๋ ˆ์ด์…˜ ํ”„๋กœํ† ์ฝœ์„ ์ค€์ˆ˜ํ•˜๋Š” ์ดํ„ฐ๋Ÿฌ๋ธ”๋กœ ํ†ต์ผ ์ดํ„ฐ๋ ˆ์ด์…˜ ํ”„๋กœํ† ์ฝœ์—๋Š” ์ดํ„ฐ๋Ÿฌ๋ธ” ํ”„๋กœํ† ์ฝœ๊ณผ ์ดํ„ฐ๋ ˆ์ดํ„ฐ ํ”„๋กœํ† ์ฝœ์ด ์žˆ๋‹ค. ์ดํ„ฐ๋Ÿฌ๋ธ” ํ”„๋กœํ† ์ฝœ(iterable protocol) Well-known Symbol์ธ Symbol.iterator๋ฅผ ํ”„๋กœํผํ‹ฐ ํ‚ค๋กœ ์‚ฌ์šฉํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ ์ƒ์† ๋ฐ›์•„ Symbol.iterator ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ดํ„ฐ๋ ˆ์ดํ„ฐ ํ”„๋กœํ† ์ฝœ์„ ์ค€์ˆ˜ํ•œ ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ทœ์•ฝ์„ ์ดํ„ฐ๋Ÿฌ๋ธ” .. 2022. 3. 27.
[7์ฃผ์ฐจ ์Šคํ„ฐ๋””]33์žฅ-Symbol 7๋ฒˆ์งธ ๋ฐ์ดํ„ฐ ํƒ€์ž… Symbol ์‹ฌ๋ฒŒ์ด๋ž€? ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—๋Š” 6๊ฐœ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด ์ˆซ์ž ๋ถˆ๋ฆฌ์–ธ undefined null ๊ฐ์ฒด ํƒ€์ž… ์‹ฌ๋ฒŒ(symbol)์€ ES6์—์„œ ๋„์ž…๋œ 7๋ฒˆ์งธ ๋ฐ์ดํ„ฐ ํƒ€์ž…์œผ๋กœ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ์›์‹œํƒ€์ž…์˜ ๊ฐ’ ๋‹ค๋ฅธ ๊ฐ’๊ณผ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ์œ ์ผ ๋ฌด์ดํ•œ ๊ฐ’์œผ๋กœ ์ด๋ฆ„ ์ถฉ๋Œ ์œ„ํ—˜์ด ์—†๋Š” ์œ ์ผํ•œ ํ”„๋กœํผํ‹ฐ ํ‚ค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ํ”„๋กœํผํ‹ฐ ํ‚ค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์€ ๋นˆ ๋ฌธ์ž์—ด์„ ํฌํ•จํ•˜๋Š” ๋ชจ๋“  ๋ฌธ์ž์—ด ๋˜๋Š” ์‹ฌ๋ฒŒ ๊ฐ’์ด๋‹ค. ์‹ฌ๋ฒŒ ๊ฐ’์˜ ์ƒ์„ฑ Symbol ํ•จ์ˆ˜ Symbol๊ฐ’์€ ๋‹ค๋ฅธ ์›์‹œ๊ฐ’๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋ฆฌํ„ฐ๋Ÿด ํ‘œ๊ธฐ๋ฒ•์ด ์—†๊ณ  Symbol ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค ์ด๋•Œ ์ƒ์„ฑ๋œ ์‹ฌ๋ฒŒ๊ฐ’์€ ์™ธ๋ถ€๋กœ ๋…ธ์ถœ๋˜์ง€ ์•Š๊ณ , ๋‹ค๋ฅธ ๊ฐ’๊ณผ ์ ˆ๋Œ€ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ์œ ์ผ๋ฌด์ดํ•œ ๊ฐ’ // ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ํ†ตํ•ด ์ƒ์„ฑ const mySymbo.. 2022. 3. 27.
[5์ฃผ์ฐจ ์Šคํ„ฐ๋””]26์žฅ-ES6 ํ•จ์ˆ˜ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ES6 ํ•จ์ˆ˜์˜ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ํ•จ์ˆ˜์˜ ๊ตฌ๋ถ„ es6 ์ด์ „์˜ ํ•จ์ˆ˜๋Š” ์‚ฌ์šฉ ๋ชฉ์ ์— ๋”ฐ๋ผ ๋ช…ํ™• ํ•˜๊ฒŒ ๊ตฌ๋ถ„ ๋˜์ง€ ์•Š์Œ ์ผ๋ฐ˜ ํ•จ์ˆ˜๋กœ์„œ ํ˜ธ์ถœ ๊ฐ€๋Šฅ new์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ํ˜ธ์ถœํ•˜์—ฌ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋กœ ํ˜ธ์ถœ ๊ฐ€๋Šฅ ๊ฐ์ฒด์— ๋ฐ”์ธ๋”ฉ ๋˜์–ด ๋ฉ”์„œ๋“œ๋กœ์„œ ํ˜ธ์ถœ ๊ฐ€๋Šฅ ์ฆ‰, es6์ด์ „์˜ ๋ชจ๋“  ํ•จ์ˆ˜๋Š” ์ผ๋ฐ˜ ํ•จ์ˆ˜, ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ๋‘˜๋‹ค ํ˜ธ์ถœ ๊ฐ€๋Šฅ es6์ด์ „์˜ ๋ชจ๋“  ํ•จ์ˆ˜๋Š” callable ์ด๋ฉด์„œ constructor ์ด๋‹ค ์‹ค์ˆ˜๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์„ฑ๋Šฅ ๋ฉด์—์„œ๋„ ์†ํ•ด ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด es6์—์„œ๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ ๋ชฉ์ ์— ๋”ฐ๋ผ ์„ธ ๊ฐ€์ง€ ์ข…๋ฅ˜๋กœ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ ES6 ํ•จ์ˆ˜์˜ ๊ตฌ๋ถ„ constructor prototype super arguments ์ผ๋ฐ˜ ํ•จ์ˆ˜(Normal, ES6 ์ด์ „ ํ•จ์ˆ˜) O O X O ๋ฉ”์„œ๋“œ(Method) X X O O ํ™”์‚ดํ‘œ(Arrow) .. 2022. 3. 27.