๐Ÿ’ป FE/๐Ÿ“ JS 12

React ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ์ƒํƒœ ๊ณต์œ  (Context API)

[ Gemini ๋Œ€ํ™” ์š”์•ฝ ] React ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ์ƒํƒœ ๊ณต์œ  (Context API)์ตœ์ข… ๋ชฉํ‘œ interestPage.tsx์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ SelectButtonGroup ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ†ตํ•ด '๊ด€์‹ฌ์‚ฌ'๋ฅผ ์„ ํƒํ•˜๋ฉด, ๊ทธ ๊ฒฐ๊ณผ๊ฐ€ ํ˜•์ œ ์ปดํฌ๋„ŒํŠธ์ธ SelectedInterests์— ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ‘œ์‹œ๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ.ํ•ต์‹ฌ ๋ฌธ์ œ ๋ฐ ํ•ด๊ฒฐ ๊ณผ์ •๋ฌธ์ œ: SelectButtonGroup๊ณผ SelectedInterests๋Š” ๋ถ€๋ชจ(interestPage)๋Š” ๊ฐ™์ง€๋งŒ ์„œ๋กœ๋Š” ๊ด€๊ณ„๊ฐ€ ์—†๋Š” ํ˜•์ œ(sibling) ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค. ํ•œ์ชฝ์—์„œ ์ผ์–ด๋‚œ ์ผ์„ ๋‹ค๋ฅธ ์ชฝ์ด ์ง์ ‘ ์•Œ ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.ํ•ด๊ฒฐ์ฑ…:์ค‘์•™ ์ €์žฅ์†Œ(Context API) ์ƒ์„ฑ: ๋ชจ๋“  ๊ด€๋ จ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๊ตฌ๋…ํ•  ์ˆ˜ ์žˆ๋Š” ์ค‘์•™ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์ธ InterestContext.tsx๋ฅผ ๋งŒ๋“ค์—ˆ..

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ bind ์–ธ์ œ ์“ฐ๋ƒ

Function.prototype.bind() - JavaScript | MDNbind() ๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ฐ›๊ฒŒ๋˜๋Š” ์ฒซ ์ธ์ž์˜ value๋กœ๋Š” this ํ‚ค์›Œ๋“œ๋ฅผ ์„ค์ •ํ•˜๊ณ , ์ด์–ด์ง€๋Š” ์ธ์ž๋“ค์€ ๋ฐ”์ธ๋“œ๋œ ํ•จ์ˆ˜์˜ ์ธ์ˆ˜์— ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.developer.mozilla.org bind() ๋ฉ”์„œ๋“œ๊ฐ€ ์‹ค๋ฌด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ฃผ์š” ๊ฒฝ์šฐ 1. ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์—์„œ this ์ปจํ…์ŠคํŠธ ๊ณ ์ •Click Meconst myObject = { name: 'MyObject', handleClick: function(event) { // bind๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์—ฌ๊ธฐ์„œ this๋Š” ๋ณดํ†ต ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. console.log(`ํด๋ฆญ ์ด๋ฒคํŠธ ๋ฐœ์ƒ!`); console.log(`this์˜ name ..

"ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด๋‹ค"

ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์„ค๋ช…: ์ผ๋ฐ˜ ๊ฐ์ฒด์ฒ˜๋Ÿผ ํ•จ์ˆ˜์—๋„ ํ‚ค-๊ฐ’ ์Œ์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋‚ด์žฅ๋œ ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.ํ•ต์‹ฌ ํŒจํ„ด: ํ•จ์ˆ˜.ํ”„๋กœํผํ‹ฐ๋ช… = ๊ฐ’; ๋˜๋Š” ํ•จ์ˆ˜.๋ฉ”์„œ๋“œ๋ช…();์˜ˆ์‹œ:function sayHello() { console.log("Hello!");}sayHello.description = "์ธ์‚ฌ๋ฅผ ํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค."; // ์ปค์Šคํ…€ ํ”„๋กœํผํ‹ฐ ์ถ”๊ฐ€console.log(sayHello.description); // "์ธ์‚ฌ๋ฅผ ํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค."console.log(sayHello.name); // "sayHello" (๋‚ด์žฅ ํ”„๋กœํผํ‹ฐ: ํ•จ์ˆ˜ ์ด๋ฆ„)console.log(sayHello.length); // 0 (๋‚ด์žฅ ํ”„๋กœํผํ‹ฐ: ๊ธฐ๋Œ€ํ•˜๋Š” ์ธ์ž์˜ ์ˆ˜)const numbers = ..

๋‹ค์–‘ํ•œ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ๊ตฌ๋ฌธ

์ค‘์š”ํ•œ ์ฐธ๊ณ  ์‚ฌํ•ญ. ์ด ๊ธ€์˜ ๋ ๋ถ€๋ถ„์— ์žˆ๋Š” "ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด๋งŒ ๋ฐ˜ํ™˜"ํ•˜๋Š” ํŠน์ˆ˜ ์‚ฌ๋ก€๋ฅผ ๋†“์น˜์ง€ ๋งˆ์„ธ์š”!1) ๊ธฐ๋ณธ ๊ตฌ๋ฌธ:const add = (a, b) => { const result = a + b; return result; // like in "normal" functions, parameters and return statement are OPTIONAL!};์ฃผ๋ชฉํ•˜์‹ค ๋งŒํ•œ ์‚ฌํ•ญ. ๋งˆ์ง€๋ง‰์˜ ์„ธ๋ฏธ์ฝœ๋ก , ํ•จ์ˆ˜ ํ‚ค์›Œ๋“œ ์—†์Œ, ๋งค๊ฐœ๋ณ€์ˆ˜/์ธ์ˆ˜์˜ ๊ด„ํ˜ธ.2) ์ •ํ™•ํžˆ ํ•˜๋‚˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›๋Š” ๊ฒฝ์šฐ ๋” ์งง์€ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ตฌ๋ฌธ.const log = message => { console.log(message); // could also return something of course - this example j..

์žฌ๊ท€์˜ ์‹ 

function solution(arr) { // ์žฌ๊ท€ ํ˜ธ์ถœ์„ ์œ„ํ•œ ๋‚ด๋ถ€ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ ๋‹ค. // ์ด ํ•จ์ˆ˜๋Š” ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋ฐฐ์—ด์˜ ๋ถ€๋ถ„์„ ์ธ์ž๋กœ ๋ฐ›๋Š”๋‹ค. function recursiveOR(currentArr) { // **๋ฒ ์ด์Šค ์ผ€์ด์Šค:** ๋งŒ์•ฝ ํ˜„์žฌ ์ฒ˜๋ฆฌํ•  ๋ฐฐ์—ด์ด ๋น„์–ด์žˆ๋‹ค๋ฉด (๊ธธ์ด๊ฐ€ 0์ด๋ผ๋ฉด) if (currentArr.length === 0) { // ๋” ์ด์ƒ OR ํ•  ๊ฒŒ ์—†์œผ๋‹ˆ 0์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์žฌ๊ท€๋ฅผ ๋ฉˆ์ถ˜๋‹ค. return 0; } // **์žฌ๊ท€ ์Šคํ…:** // 1. ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. const firstBinaryString = currentArr[0]; ..

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ on๊ณผ handle์˜ ๊ด€๊ณ„์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค.

๋ฐ”๋‹๋ผ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ๋กœ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„, api ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ž‘์€ ๊ณผ์ œ๋ฅผ ํ•˜๋Š”๋ฐ "๋ฐ”๋‹๋ผ", "์ปดํฌ๋„ŒํŠธ"๋กœ ํ•˜๋ ค๋‹ˆ ใ…‡-ใ…‡ ์ƒํƒœ๋˜์–ด์„œ ์•„๋ฌด๊ฒƒ๋„ ๋ชปํ•˜๊ฒ ๋”๋ผ. ๋ฆฌ์•กํŠธ๋Š” ์ž˜ ๋ชจ๋ฅด๊ณ  ์Šค๋ฒจํŠธ๋Š” ์ข€์ข€๋”ฐ๋ฆฌ ๊ฐ•์˜๋ฅผ ๋“ฃ๋Š” ์ค‘์ด๋ผ ์Šค๋ฒจํŠธ๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ๋ฐ”๋‹๋ผ๋กœ ์˜ฎ๊ธธ ๊ณ„ํš์„ ์„ธ์› ๋‹ค. ํ™•์‹คํžˆ ์Šค๋ฒจํŠธ๋กœ ํ•˜๋‹ˆ ์‹ ๊ฒฝ์“ธ๊ฒŒ ์ ์–ด์„œ ์ข‹์•˜๋‹ค. ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ•˜๋Š” ์ผ์€ ํ•˜๋‚˜์˜ ํŒŒ์ผ์—์„œ๋งŒ ์ž‘์„ฑํ•˜๋ฉด ๋˜๋‹ˆ๊นŒ ํ•˜๋‚˜์˜ ํŒŒ์ผ์—์„œ handle์„ ์ •์˜ํ•˜๊ณ  ๋‚ด๋ ค์ค„ ์ผ์ด ์ ์–ด์ง€๋‹ˆ ์ฐธ ํŽธํ–ˆ๋‹ค. ๋ชจ๋ฅด๊ฒ ๋Š” ๋ถ€๋ถ„์€ ๋ฌธ์„œ์™€ ๊ตฌ๊ธ€๋ง, ai ๋„์›€ ์กฐ๊ธˆ์œผ๋กœ ๊ธˆ๋ฐฉ ํ•ด๊ฒฐ๋๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์™„์„ฑ๋œ ํŒŒ์ผ๋“ค์„ ai์—๊ฒŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ปดํฌ๋„ŒํŠธ ํŒŒ์ผ๋กœ ๋ณ€ํ™˜ํ•˜๋ผ๊ณ  "์‹œ์ผฐ"๋”๋‹ˆ "ํ•ด์คฌ"๋‹ค. ํŒŒ์ผ์„ ์—ด์–ด ์ฝ”๋“œ๋ฅผ ๋œฏ์–ด๋ณด๋Š”๋ฐ app.js ํŒŒ์ผ ๊ฐ”๋‹ค๊ฐ€ ์ปดํฌ๋„ŒํŠธ ํŒŒ์ผ ๊ฐ”๋‹ค๊ฐ€ ์™€๋ฆฌ๊ฐ€๋ฆฌ๋ฅผ ๋„ˆ๋ฌด..

๋ฐ”๋‹๋ผ JS ํด๋ž˜์Šค ์‚ฝ์งˆ ๊ธฐ๋ก: ์„ค๊ณ„๋ถ€ํ„ฐ this์™€์˜ ์”จ๋ฆ„๊นŒ์ง€

1. ์™œ ํด๋ž˜์Šค?๋‹จ์ˆœ ํ•จ์ˆ˜์™€ ์ „์—ญ ๋ณ€์ˆ˜: ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜์ง€๋งŒ, ์—ฌ๋Ÿฌ ์นด์šดํ„ฐ๋ฅผ ๋งŒ๋“ค ๊ฒฝ์šฐ ์ƒํƒœ ๊ด€๋ฆฌ๊ฐ€ ๋ณต์žกํ•ด์ง€๊ณ  ๋ณ€์ˆ˜ ์ด๋ฆ„ ์ถฉ๋Œ์ด๋‚˜ ์Šค์ฝ”ํ”„ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ธฐ ์‰ฌ์› ๋‹ค.ํด๋กœ์ €(Closure) ํ™œ์šฉ: ํด๋กœ์ €๋ฅผ ์ด์šฉํ•ด ์ƒํƒœ๋ฅผ ์ˆจ๊ธฐ๊ณ  ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํŒฉํ† ๋ฆฌ ํ•จ์ˆ˜ ํŒจํ„ด๋„ ๊ฐ€๋Šฅํ–ˆ๋‹ค. ์ƒํƒœ๋ฅผ ๋น„๊ณต๊ฐœ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ๋งˆ๋‹ค ํ•จ์ˆ˜๋“ค์ด ์ƒˆ๋กœ ์ƒ์„ฑ๋˜๋Š” ์ , ๊ทธ๋ฆฌ๊ณ  'ํ‹€'๋กœ์„œ์˜ ๋ช…ํ™•์„ฑ์ด ํด๋ž˜์Šค๋ณด๋‹ค๋Š” ๋ถ€์กฑํ•˜๋‹ค๊ณ  ๋А๊ปด์กŒ๋‹ค.ES5 ์ƒ์„ฑ์ž ํ•จ์ˆ˜์™€ ํ”„๋กœํ† ํƒ€์ž…: new ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ์ „ํ†ต์ ์ธ ๋ฐฉ์‹์ด๋‹ค. ํด๋ž˜์Šค์™€ ๊ฐ€์žฅ ์œ ์‚ฌํ•˜์ง€๋งŒ, prototype์„ ์ง์ ‘ ๋‹ค๋ค„์•ผ ํ•ด์„œ ๋ฌธ๋ฒ•์ด ๋‹ค์†Œ ๋ฒˆ๊ฑฐ๋กญ๊ณ  ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง„๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.์ด๋Ÿฐ ์ ๋“ค์„ ๊ณ ๋ คํ–ˆ์„ ๋•Œ, ES6์˜ class ๋ฌธ๋ฒ•์ด ๊ด€๋ จ ๋ฐ์ดํ„ฐ(์ƒํƒœ)์™€ ๊ธฐ๋Šฅ(๋ฉ”..

MVC ํŒจํ„ด ์ตํžˆ๊ธฐ | ๊ฐ„๋‹จํ•œ(์ „ํ˜€ ๊ฐ„๋‹จํ•˜์ง€ ์•Š๋‹ค.) ํ€ด์ฆˆ ์•ฑ MVC ํŒจํ„ด์œผ๋กœ ๋งŒ๋“ค๊ธฐ

๋ƒ…๋‹ค ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋‚˜๋Š” ๋ฐ”๋‹๋ผ๋กœ ํ•จ์ˆ˜๋ฒ”๋ฒ…์ธ ์ฝ”๋“œ๋งŒ ์งœ๋ดค๊ธฐ์— .. ํ•ด๋ณด๊ณ  ์‹ถ์–ด์กŒ๋‹ค. ๋‚ด ๋จธ๋ฆฌ๋กœ. ๊ณผ์—ฐ .. 5:42pm 5:57pm if (this.data.data[this.data.currentIndex].answerIndex === parseInt(selectedIndex)) {            this.data.upScore();            console.log("์ •๋‹ต")        } else {            console.log("์˜ค๋‹ต")        } ์ด๊ฒƒ. ๋ญ์˜ˆ์š”~?6:15pm ์–ผ์ถ” ์™„์„ฑ. ์–ด๋””์„œ ์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ•ด์•ผํ•˜๋Š”์ง€๋Š” ๊ฐ์ด ์žกํ˜”์Œ. ํ—ˆ๋‚˜, MVC ํŒจํ„ด์˜ ๊ด€์ ์—์„œ ํ˜„์žฌ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.ํ˜„์žฌ ์ฝ”๋“œ๋Š” MVC ํŒจํ„ด์˜ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ๋Š” ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ, ๋ช‡ ๊ฐ€์ง€ ..

MDN ๋ฒˆ์—ญ | Window: requestAnimationFrame() method

window.requestAnimationFrame() ์™„๋ฒฝ ์ •๋ฆฌ (MDN Web Docs)์ด ๋ฌธ์„œ๋Š” MDN Web Docs์˜ window.requestAnimationFrame() ํŽ˜์ด์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ต์‹ฌ ๋‚ด์šฉ์„ ์ƒ์„ธํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๊ณ , ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ์„ค๋ช…๊ณผ ์˜ˆ์‹œ ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.1. requestAnimationFrame()์ด๋ž€?์ •์˜: window.requestAnimationFrame()์€ ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ์ˆ˜ํ–‰ํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์•Œ๋ฆฌ๊ณ , ๋‹ค์Œ ๋ฆฌํŽ˜์ธํŠธ(repaint)๊ฐ€ ์ง„ํ–‰๋˜๊ธฐ ์ „์— ํ•ด๋‹น ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋ธŒ๋ผ์šฐ์ €์˜ ๋ Œ๋”๋ง ์ฃผ๊ธฐ์— ๋งž์ถฐ์„œ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” API์ž…๋‹ˆ๋‹ค.๋™์ž‘ ๋ฐฉ์‹:requestAnimationFra..

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ถˆ๋ณ€ ๊ฐ์ฒด | ์ƒํƒœ๋ฅผ ๋ถˆ๋ณ€ํ•˜๊ฒŒ ์—…๋ฐ์ดํŠธ ํ•œ๋‹ค๋Š” ๊ฑด?

* ๊ฐœ์ธ ๊ณต๋ถ€๋ฅผ ์ •๋ฆฌํ•œ ํฌ์ŠคํŠธ์ž…๋‹ˆ๋‹ค. * ์ž˜๋ชป๋œ ์ •๋ณด๋Š” ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์„ธ์š”. * ์œ„ํ‚ค๋ถ์Šค์˜ ์ •์žฌ๋‚จ ์ฝ”์–ด์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ฐธ๊ณ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋ฆฌ์•กํŠธ์—์„œ ๋ถˆ๋ณ€์„ฑ์ด๋ž€? ๋ฆฌ์•กํŠธ๋ฅผ ๊ณต๋ถ€ํ•˜๋‹ค๋ณด๋ฉด ์ƒํƒœ๋ฅผ ๋ถˆ๋ณ€ํ•˜๊ฒŒ ์—…๋ฐ์ดํŠธ ํ•ด์•ผํ•œ๋‹ค๊ณ  ๋ฐฐ์› ์„ ๊ฒƒ์ด๋‹ค. ์ด๊ฒŒ ๊ณผ์—ฐ ๋ฌด์—‡์ผ๊นŒ? ์•ž์„œ ๊ฐ์ฒด๋Š” ๊ฐ€๋ณ€(๋‚ด๋ถ€์˜ ํ”„๋กœํผํ‹ฐ ๊ฐ’์ด ๋ณ€ํ•จ)์ด๋ผ๊ณ  ํ•˜์˜€๋‹ค. ๋ฆฌ์•กํŠธ์˜ ์ƒํƒœ(๋ณ€์ˆ˜)์˜ ๊ฐ’์œผ๋กœ ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•˜์˜€์„๋•Œ ์‚ฌ์šฉ์ž๋Š” ๊ฐ์ฒด์— ์ ‘๊ทผํ•˜์—ฌ ๊ฐ’์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๊ฒƒ์€ ๋ถˆ๋ณ€ํ•˜๋‹ค๋Š” ๊ฒƒ์— ๋ฐ˜ํ•˜๋Š” ๊ฒƒ์ด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ์žฌ์„ค์ • ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฐ’์„ ์—…๋ฐ์ดํŠธ ํ•ด์ค˜์•ผ ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒƒ์„ ๋ถˆ๋ณ€์„ฑ์„ ์ง€ํ‚ค๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋˜ํ•œ ๋ฆฌ์•กํŠธ์˜ set์€ ์ด์ „๊ฐ’์˜ ๊ฐ’๊ณผ ๊ฐ™์„๋•Œ ๊ฐ’์ด ๋ณ€ํ•˜์ง€ ์•Š๊ณ  ์ƒํƒœ๊ฐ€ ์œ ์ง€ ๋œ๋‹ค. ๋‚ด๋ถ€ ํ”„๋กœํผํ‹ฐ๋กœ ์ ‘๊ทผํ•ด์„œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•œ ๊ฒฝ์šฐ ์ฃผ์†Œ๋ฅผ ..

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ์™€ ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ | ์ƒ์ˆ˜๋Š” ๋ถˆ๋ณ€๊ฐ’์ธ๊ฐ€?

* ๊ฐœ์ธ ๊ณต๋ถ€๋ฅผ ์ •๋ฆฌํ•œ ํฌ์ŠคํŠธ์ž…๋‹ˆ๋‹ค. * ์ž˜๋ชป๋œ ์ •๋ณด๋Š” ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์„ธ์š”. * ์œ„ํ‚ค๋ถ์Šค์˜ ์ •์žฌ๋‚จ ์ฝ”์–ด์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ฐธ๊ณ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ƒ์ˆ˜๋Š” ๋ถˆ๋ณ€๊ฐ’์ธ๊ฐ€? ๊ธฐ๋ณธํ˜• ์ฐธ์กฐํ˜• ๊ฐ€๋ณ€๊ฐ’ ๋ถˆ๋ณ€๊ฐ’ ๊ฐ๊ฐ์˜ ์ •์˜๋ฅผ ์‚ดํŽด๋ณด์ž. ์ƒ์ˆ˜๋ž€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์—†๋Š” ๊ฐ’์ด๋‹ค. ๋ถˆ๋ณ€๊ฐ’์ด๋ž€ ๊ฐ’์ด ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค. ์–ผํ• ๋“ค์œผ๋ฉด ๊ฐ™์€ ๋ง์ฒ˜๋Ÿผ ๋“ค๋ฆฐ๋‹ค. ํ•˜์ง€๋งŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ๋‹ค๋ฅด๋‹ค. ๋ณ€์ˆ˜์™€ ์ƒ์ˆ˜์˜ ๊ตฌ๋ถ„์€ ๋ณ€์ˆ˜ ์˜์—ญ ๋ฉ”๋ชจ๋ฆฌ์— ๋”ฐ๋ผ, ๋ถˆ๋ณ€๊ฐ’์˜ ์—ฌ๋ถ€๋Š” ๋ฐ์ดํ„ฐ ์˜์—ญ ๋ฉ”๋ชจ๋ฆฌ์— ๋”ฐ๋ผ ๊ตฌ๋ถ„๋œ๋‹ค. ๋ถˆ๋ณ€๊ฐ’์œผ๋กœ๋Š” ๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ(์ˆซ์ž, ๋ฌธ์ž์—ด, null ๋“ฑ)๊ฐ€ ์žˆ๋‹ค. ๊ฐ’์„ ๋ฐ”๊ฟ€ ๋•Œ ๋งˆ๋‹ค ๊ธฐ์กด๊ฐ’์„ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค. ๊ณ ๋กœ ๊ธฐ์กด์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ์˜ ๊ธฐ๋ณธ์ ์ธ ์„ฑ์งˆ์€ ๊ฐ€๋ณ€๊ฐ’์ด๋‹ค. ๋ณ€์ˆ˜์— ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ• ๋•Œ ๊ฐ์ฒด์˜ ํ”„๋กœํผ..