ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ๊ฑด๋ฌธ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ

์ „์ฒด ํ‘œํ˜„์‹์„ ํ‰๊ฐ€ํ•˜์ง€ ์•Š๊ณ  ์ตœ์†Œํ•œ์˜ ํ‰๊ฐ€๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•˜๋Š” ๋ฐฉ์‹์„ ๋งํ•œ๋‹ค.

๋‹จ์ถ• ํ‰๊ฐ€๋Š” ์ฃผ๋กœ && (๋…ผ๋ฆฌ๊ณฑ), || (๋…ผ๋ฆฌํ•ฉ), ?? (null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž)๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค.

 

๋…ผ๋ฆฌํ•ฉ( || ) ์—ฐ์‚ฐ์ž

๋…ผ๋ฆฌํ•ฉ ์—ฐ์‚ฐ์ž ||๋Š” ์ขŒ๋ณ€์˜ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ falsy ๊ฐ’(false0""nullundefinedNaN)์ผ ๋•Œ๋งŒ ์šฐ๋ณ€์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ํ‰๊ฐ€ํ•œ๋‹ค.

์ขŒ๋ณ€์˜ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ truthy ๊ฐ’์ผ ๊ฒฝ์šฐ, ๊ทธ ๊ฐ’์ด ๋ฐ”๋กœ ๊ฒฐ๊ณผ๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜๋˜๋ฉฐ, ์šฐ๋ณ€์€ ํ‰๊ฐ€๋˜์ง€ ์•Š๋Š”๋‹ค.

 

์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด 

A || B

A๊ฐ€ false๋ผ๋ฉด B๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ ,

A๊ฐ€ true๋ผ๋ฉด B๋Š” ๋ฌด์‹œ, A์— ๋งž๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

+) falsyํ•œ ๊ฐ’ : false, 0, "", null, undefined

 

 

๐Ÿ“์˜ˆ์‹œ

// ์œ ์ € ์ •๋ณด๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š์•˜์„ ๋•Œ ๊ธฐ๋ณธ ์ด๋ฆ„ ์ œ๊ณต
function getUsername(user) {
    return user.name || '์‹ ์›๋ฏธ์ƒ';
}

console.log(getUsername({ name: '๋ฅดํƒ„์ด' })); //๋ฅดํƒ„์ด
console.log(getUsername({})); //์‹ ์›๋ฏธ์ƒ

 

๐Ÿ‘‡๐Ÿป์ด ์‹์ด ์–ด๋–ป๊ฒŒ ๋‚˜์˜จ ๊ฑฐ์ง€?

๋”๋ณด๊ธฐ

๊ณผ์ •

1.  getUserName ์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ

function getUsername(user) {
    return user.name;
}

const person = {
age: 25, 
};

console.log(getUsername(person);

=> undefined์ด ๋‚˜์˜จ๋‹ค. (falsyํ•œ ๊ฐ’)

 

 

2. ๊ฐ’์ด undefined ์ผ ๋•Œ "์‹ ์› ๋ฏธ์ƒ"์„ ์ถœ๋ ฅํ•˜๊ธฐ

function getUsername(user) {
	if(user.name === undefined) {
    return "์‹ ์› ๋ฏธ์ƒ"
	}
  return user.name;
}

const person = {
age: 25, 
};

console.log(getUsername(person);

 

 

3. ๊ฐ’์ด falsy ํ•  ๋•Œ๋กœ ํ™•์žฅํ•˜๊ธฐ

function getUsername(user) {
	if(!user.name) {
    return "์‹ ์› ๋ฏธ์ƒ"
	}
  return user.name;
}

const person = {
age: 25, 
};

console.log(getUsername(person);

 

 

4. ๊ฐ„๋‹จํžˆ ๋‚˜ํƒ€๋‚ด๊ธฐ

function getUsername(user) {
	return user.name || "์‹ ์› ๋ฏธ์ƒ"
}

const person = {
age: 25, 
};

console.log(getUsername(person);

 

 

5. ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ์ ์šฉํ•˜๊ธฐ

const = getUsername = (user) => return user.name || "์‹ ์› ๋ฏธ์ƒ"

const person = {
age: 25, 
};

console.log(getUsername(person);

 

 

๋…ผ๋ฆฌ๊ณฑ(&&) ์—ฐ์‚ฐ์ž

๋…ผ๋ฆฌ๊ณฑ ์—ฐ์‚ฐ์ž &&๋Š” ์ขŒ๋ณ€์ด truthy์ผ ๋•Œ๋งŒ ์šฐ๋ณ€์„ ํ‰๊ฐ€ํ•œ๋‹ค.

 

์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด 

A || B

A๊ฐ€ true์ผ ๋•Œ๋งŒ B๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

์กฐ๊ฑด์— ๋”ฐ๋ผ ํŠน์ • ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.

 

 

๐Ÿ“์˜ˆ์‹œ

// ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ ์ƒํƒœ์ด๋ฉด ํ™˜์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅ
let loggedIn = true;
let username = '๋ฅดํƒ„์ด';
loggedIn && console.log('ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ' + username); //ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ๋ฅดํƒ„์ด

loggedIn = false;
loggedIn && console.log('ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ' + username); //์•„๋ฌด๊ฒƒ๋„ ์ถœ๋ ฅ๋˜์ง€ ์•Š์Œ

 

 

 

Optional Chaining (?.)

๊ฐ์ฒด์˜ ์†์„ฑ์— ์ ‘๊ทผํ•  ๋•Œ ํ•ด๋‹น ๊ฒฝ๋กœ์— ์†์„ฑ์ด ์กด์žฌํ•˜์ง€ ์•Š์•„๋„ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ , ๋Œ€์‹  undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ์ฒด์˜ ์ค‘์ฒฉ๋œ ์†์„ฑ์— ์•ˆ์ „ํ•˜๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๐Ÿ“์ž‘๋™ ๋ฐฉ์‹

๋”๋ณด๊ธฐ

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ์ฒด๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž:

const user = {
    profile: {
        name: "๋ฅดํƒ„์ด",
        details: {
            age: 30,
            location: "์„œ์šธ์‹œ ๊ฐ•๋‚จ๊ตฌ"
        }
    }
};

 

์—ฌ๊ธฐ์„œ ์‚ฌ์šฉ์ž์˜ ๋‚˜์ด๋ฅผ ์ ‘๊ทผํ•˜๋ ค๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค:

console.log(user.profile.details.age);  // ์ถœ๋ ฅ: 30

 

๊ทธ๋Ÿฌ๋‚˜, profile ๋˜๋Š”details๊ฐ€ undefined ๋˜๋Š” null์ผ ๊ฒฝ์šฐ ์ด ์ฝ”๋“œ๋Š” ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

Optional chaining์„ ์‚ฌ์šฉํ•˜๋ฉด, ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ๋‹ค:

console.log(user.profile?.details?.age); // ์ถœ๋ ฅ: 30

 

์ด์ œ profile์ด๋‚˜ details ์ค‘ ํ•˜๋‚˜๋ผ๋„ undefined๋‚˜ null์ด๋ฉด, 

?. ์—ฐ์‚ฐ์ž๋Š” ๊ทธ ์‹œ์ ์—์„œ ํ‰๊ฐ€๋ฅผ ๋ฉˆ์ถ”๊ณ  undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค:

const user = {};
console.log(user.profile?.details?.age);  // ์ถœ๋ ฅ: undefined

 

Optional chaining์€ ๊ฐ์ฒด์˜ ์†์„ฑ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฐ์ฒด๊ฐ€ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋„ ์•ˆ์ „ํ•˜๊ฒŒ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค:

const result = user.profile?.getDetails?.();  
// user.profile.getDetails๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด undefined ๋ฐ˜ํ™˜

 

 

optional chaining์€ ์ค‘์ฒฉ๋œ ๊ฐ์ฒด ๊ตฌ์กฐ์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ๊ฐ’์„ ์ฝ๊ฑฐ๋‚˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋ฉฐ,

์ฝ”๋“œ์˜ ์•ˆ์ •์„ฑ์„ ๋†’์ด๊ณ  ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐ ๋„์›€์„ ์ค€๋‹ค.

 

 

 

Null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž (??)

?? ์—ฐ์‚ฐ์ž๋Š” ์ขŒ๋ณ€์ด null์ด๋‚˜ undefined์ผ ๊ฒฝ์šฐ์—๋งŒ ์šฐ๋ณ€์„ ํ‰๊ฐ€ํ•œ๋‹ค.

null ๋˜๋Š” undefined๊ฐ€ ์•„๋‹Œ falsy ๊ฐ’๋“ค์„ ์œ ํšจํ•œ ๊ฐ’์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

// ์‚ฌ์šฉ์ž์˜ ์œ„์น˜ ์„ค์ •์ด ์—†์œผ๋ฉด ๊ธฐ๋ณธ ์œ„์น˜๋ฅผ ์ œ๊ณต
let userLocation = null;
console.log(userLocation ?? 'Unknown location');  // ์ถœ๋ ฅ: Unknown location

userLocation = 'Seoul';
console.log(userLocation ?? 'Unknown location');  // ์ถœ๋ ฅ: Seoul

// ์‚ฌ์šฉ์ž ์ž…๋ ฅ์ด 0์ธ ๊ฒฝ์šฐ์—๋„ 0์„ ์œ ํšจํ•œ ๊ฐ’์œผ๋กœ ์ทจ๊ธ‰
const temperature = 0;
console.log(temperature ?? 25);  // ์ถœ๋ ฅ: 0

 

 

 

๐Ÿ“||(๋…ผ๋ฆฌ OR) ์™€ ??(null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž)์˜ ์ฐจ์ด!

๋”๋ณด๊ธฐ

truthyํ•œ ๊ฐ’์ด๋ƒ ์•„๋‹ˆ๋ƒ vs null์ด๋‚˜ undefined์ด๋ƒ ์•„๋‹ˆ๋ƒ

function displayPreferences(preferences) {
  // `||` ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ ์˜ˆ
  const textLength = preferences.textLength || 50; // textLength๊ฐ€ 0์ผ ๊ฒฝ์šฐ 50์ด ํ• ๋‹น๋จ
  console.log(`Text Length: ${textLength}`);

  // `??` ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ ์˜ˆ
  const itemsPerPage = preferences.itemsPerPage ?? 10; // itemsPerPage๊ฐ€ null ๋˜๋Š” undefined์ผ ๋•Œ๋งŒ 10์ด ํ• ๋‹น๋จ
  console.log(`Items Per Page: ${itemsPerPage}`);
}

// ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค
const userPreferences = {
  textLength: 0, // 0์ด ์œ ํšจํ•œ ๊ฐ’์ด์ง€๋งŒ || ์—ฐ์‚ฐ์ž๋กœ ์ธํ•ด 50์ด ์ถœ๋ ฅ๋จ
  itemsPerPage: null // null ๊ฐ’์— ๋Œ€ํ•ด ?? ์—ฐ์‚ฐ์ž๋กœ ์ธํ•ด 10์ด ์ถœ๋ ฅ๋จ
};

displayPreferences(userPreferences);

 

๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2026/03   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ