λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
JS

[JS] : Null / Undefined

by κΆŒμŠΎν–„ 2023. 7. 24.

 

undefined

코딩을 ν•˜λ‹€λ³΄λ©΄ μ°Έ 많이 λ³΄λŠ” 녀석이닀.

JSμ—μ„œ 값이 없을 λ•Œ 많이 λ‚˜νƒ€λ‚΄μ€€λ‹€.

undefined κ°€ 좜λ ₯λ˜λŠ” 상황은 μ—¬λŸ¬κ°€μ§€κ°€ μžˆλ‹€.

  • λ³€μˆ˜μ— 값이 μ§€μ •λ˜μ§€ μ•Šμ€ 경우, 데이터 μ˜μ—­μ˜ λ©”λͺ¨λ¦¬μ£Όμ†Œλ₯Ό κ°–κ³  μžˆμ§€ μ•Šμ€ μ‹λ³„μžμ— μ ‘κ·Όν•  λ•Œ λ°œμƒ
  • κ°μ²΄λ‚˜ 배열에 . λ˜λŠ” [] 으둜 μ ‘κ·Όν•˜κ³ μž ν•  λ•Œ ν•΄λ‹Ή 데이터가 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 경우
  • return 문이 μ—†λŠ” ν•¨μˆ˜ λ˜λŠ” ν˜ΈμΆœλ˜μ§€ μ•ŠλŠ” ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•˜κ³ μž ν•  경우

μ˜ˆμ‹œ μ½”λ“œ 

var a;
console.log(a); // 값을 ν• λ‹Ήλ˜μ§€ μ•Šμ€ λ³€μˆ˜μ— μ ‘κ·Όν•  λ•Œ

var obj = { a: 1 };
console.log(obj.a); // 1
console.log(obj.b); // μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” property에 μ ‘κ·Όν•  λ•Œ
// console.log(b); // 였λ₯˜ λ°œμƒ

var func = function() { };
var c = func(); // λ°˜ν™˜ 값이 μ—†λŠ” ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•œ 값을 ν• λ‹Ήν•œ ν›„ 확인해보면,
console.log(c); // undefined

JSμ—μ„œλŠ” μœ„μ™€ 같은 μƒν™©μ—μ„œ undefined λ₯Ό 좜λ ₯ν•˜κΈ° λ•Œλ¬Έμ—, "μ—†μŒ"을 λͺ…μ‹œμ μœΌλ‘œ ν‘œν˜„ν•˜κ³ μž ν•œλ‹€λ©΄,
undefined κ°€ μ•„λ‹Œ Null 둜 ν†΅μΌμ‹œν‚€λ €κ³  ν•΄μ•Ό ν•œλ‹€.

 

Null

"μ—†μŒ"을 λͺ…μ‹œμ μœΌλ‘œ ν‘œν˜„ν•˜λŠ” κΈ°λ³Έν˜• 데이터 νƒ€μž…μ΄λ‹€.

코딩을 ν•˜λ©΄μ„œ μ£Όμ˜ν•  뢀뢄은 Null 의 νƒ€μž…μ„ 확인 ν•  λ•Œ Null 의 νƒ€μž…μ€ objectκ°€ λ‚˜μ˜¨λ‹€λŠ” 것이닀.

μ΄μœ λŠ” JS에 μ‘΄μž¬ν•˜λŠ” 버그 쀑 ν•˜λ‚˜μ΄λ‹€.

μ˜ˆμ‹œ μ½”λ“œ

var n = null;
console.log(typeof n); // object JS 버그

// λ™λ“±μ—°μ‚°μž (equality operator)
console.log(n == undefined); // true
console.log(n == null); // true

// μΌμΉ˜μ—°μ‚°μž (identity operator)
console.log(n === undefined); // false
console.log(n === null); // true

λ™λ“±μ—°μ‚°μžμ™€ μΌμΉ˜μ—°μ‚°μžμ˜ μ°¨μ΄λŠ”

μš°μ„  ν˜•νƒœμ˜ μ°¨μ΄λŠ” " = " 의 κ°œμˆ˜μ΄λ‹€. 각각 2κ°œμ™€ 3개둜 ν˜•νƒœμ˜ 차이가 μ‘΄μž¬ν•œλ‹€.

의미의 μ°¨μ΄λŠ” λ™λ“±μ—°μ‚°μž 같은 κ²½μš°λŠ” μ„œλ‘œ λ™λ“±ν•œ 값을 κ°€μ§€λŠ”μ§€ ν™•μΈν•˜λŠ” μ—°μ‚°μžμ΄λ‹€.
μ΄λ•Œ, μ„œλ‘œμ˜ νƒ€μž…κΉŒμ§€ μΌμΉ˜ν•œμ§€ νŒλ³„ν•˜μ§€λŠ” μ•ŠλŠ”λ‹€.

반면, μΌμΉ˜μ—°μ‚°μžλŠ” μ„œλ‘œ νƒ€μž…κΉŒμ§€ μΌμΉ˜ν•˜λŠ”μ§€ νŒλ³„ν•΄μ£ΌλŠ” μ—°μ‚°μžμ΄λ‹€.

고둜 μ˜ˆμ™Έμ²˜λ¦¬ ν˜Ήμ€ 코딩을 μ§„ν–‰ν•˜λ©΄μ„œ μΌμΉ˜μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λŠ” 편이 보닀 더 μ •ν™•ν•œ μΌμΉ˜μ—¬λΆ€ νŒλ³„μ΄ κ°€λŠ₯ν•˜λ‹€.

 

#null #undefined #λ™λ“±μ—°μ‚°μž #μΌμΉ˜μ—°μ‚°μž

'JS' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[JS] : 쑰건뢀 μ‹€ν–‰ / μ‚Όν•­ μ—°μ‚°μžμ™€ 단좕평가  (0) 2023.07.26
[JS] : Switch  (0) 2023.07.26
[JS] : Iterator ( for ... of )  (0) 2023.07.23
[JS] : Set  (0) 2023.07.22
[JS] : Map  (0) 2023.07.21