๐Ÿ“– TIL - "์•„ํ•˜! ์ด๊ฑฐ์˜€๊ตฌ๋‚˜" JavaScript ๊ฐ์ฒด์˜ ํ‚ค ํ™•์ธ ๋ฐฉ๋ฒ• ์ด์ •๋ฆฌ ๐Ÿ”

์Š˜ยท2025๋…„ 1์›” 28์ผ

๐Ÿ“– TIL

๋ชฉ๋ก ๋ณด๊ธฐ
39/90

๐Ÿ“Œ ๋ฌธ์ œ ์„ค๋ช…

JavaScript์—์„œ ๊ฐ์ฒด์˜ ํŠน์ • ํ‚ค(์†์„ฑ)๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ํ•™์Šตํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

1. hasOwnProperty() ๋ฉ”์„œ๋“œ

const obj = { name: "Alice", age: 25 };

console.log(obj.hasOwnProperty("name"));     // true
console.log(obj.hasOwnProperty("gender"));   // false
  • ๊ฐ์ฒด ์ž์ฒด์— ์†ํ•œ ํ‚ค๋งŒ ํ™•์ธ
  • ์ƒ์†๋ฐ›์€ ์†์„ฑ์€ ์ œ์™ธ

2. in ์—ฐ์‚ฐ์ž

const obj = { name: "Alice", age: 25 };

console.log("name" in obj);      // true
console.log("toString" in obj);  // true (ํ”„๋กœํ† ํƒ€์ž…์—์„œ ์ƒ์†)
  • ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ๊นŒ์ง€ ํฌํ•จํ•˜์—ฌ ํ™•์ธ
  • ์ƒ์†๋ฐ›์€ ์†์„ฑ๋„ ํ™•์ธ ๊ฐ€๋Šฅ

3. Modern Approach

const obj = { name: "Alice", age: 25 };

console.log(obj?.name !== undefined);    // true
console.log(obj?.gender !== undefined);  // false
  • Optional Chaining ํ™œ์šฉ
  • undefined ์ฒดํฌ์™€ ์กฐํ•ฉ

๐Ÿ” ์ฝ”๋“œ ์„ค๋ช…

์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜

function hasKey(obj, key) {
  return obj.hasOwnProperty(key);
}

function hasKeyIncludingPrototype(obj, key) {
  return key in obj;
}

โœจ ์ƒˆ๋กญ๊ฒŒ ๋ฐฐ์šด ์ 

  1. hasOwnProperty์™€ in ์—ฐ์‚ฐ์ž์˜ ์ฐจ์ด์ 

    • hasOwnProperty: ์ง์ ‘ ์†Œ์œ ํ•œ ์†์„ฑ๋งŒ ์ฒดํฌ
    • in: ์ƒ์†๋ฐ›์€ ์†์„ฑ๊นŒ์ง€ ์ฒดํฌ
  2. Modern JavaScript์˜ ํŽธ๋ฆฌํ•œ ๊ธฐ๋Šฅ

    • Optional Chaining์œผ๋กœ ๋” ์•ˆ์ „ํ•œ ์†์„ฑ ์ ‘๊ทผ
    • undefined ์ฒดํฌ์™€ ์กฐํ•ฉํ•˜์—ฌ ์œ ์—ฐํ•œ ํ™•์ธ ๊ฐ€๋Šฅ

๐Ÿš€ ์ด๋Ÿฐ ์ ์ด ํšจ์œจ์ ์ด์—์š”

  • ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ๋ฉ”์„œ๋“œ ์„ ํƒ ๊ฐ€๋Šฅ
  • ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค์–ด ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์‚ฌ์šฉ
  • Optional Chaining์œผ๋กœ ๋” ์•ˆ์ „ํ•œ ์ฝ”๋“œ ์ž‘์„ฑ

โญ๏ธ ์ฐธ๊ณ  ์ž๋ฃŒ

  • MDN - hasOwnProperty
  • MDN - in operator
  • Modern JavaScript - Optional Chaining

์ด์ œ๋Š” ๊ฐ์ฒด์˜ ํ‚ค๋ฅผ ํ™•์ธํ•  ๋•Œ ์ƒํ™ฉ์— ๋งž๋Š” ์ ์ ˆํ•œ ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋๋‹ค! ๐ŸŽฏ

profile
์ฃผ๋‹ˆ์–ด ํ”„๋ก ํŠธ์—”๋“œ ์„ฑ์žฅ๊ธฐ ๊ธฐ๋ก๊ธฐ๋ก

0๊ฐœ์˜ ๋Œ“๊ธ€