β
9.1 νμ
λ³νμ΄λ?
κΈ°μ‘΄ μμ κ°(primitive value)μ μ§μ λ³κ²½νλ κ²μ μλκ³ κΈ°μ‘΄ μμ κ°μ μ΄μ©ν΄ λ€λ₯Έ νμ
μ μλ‘μ΄ μμκ°μ μμ±νλ κ²μ΄λ€. (-> immutable value μ΄κΈ° λλ¬Έ)
λͺ
μμ νμ
λ³ν/νμ
μΊμ€ν
: κ°λ°μκ° μλμ μΌλ‘ κ°μ νμ
μ λ³ννλ κ²
μ묡μ νμ
λ³ν/νμ
κ°μ λ³ν : μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ μ묡μ μΌλ‘ νμ
μ΄ λ³νλλ κ²
β
9.2 μ묡μ νμ
λ³ν
μλ°μ€ν¬λ¦½νΈ μμ§μ ννμμ νκ°ν λ κ°λ°μμ μλμλ μκ΄μμ΄ μ½λμ λ¬Έλ§₯μ κ³ λ €ν΄ μ묡μ μΌλ‘ λ°μ΄ν° νμ
μ κ°μ λ³νν λκ° μλ€.
λ¬Έμμ΄(string), μ«μ(number), λΆλ¦¬μΈ(boolean) κ³Ό κ°μ μμ νμ
(primitive type) μ€ νλλ‘ νμ
μ μλ λ³νλλ€.
λ¬Έμμ΄ νμ
μΌλ‘ λ³ν
+ μ°μ°μλ νΌμ°μ°μ μ€ νλ μ΄μμ΄ λ¬Έμμ΄μ΄λ©΄, λ¬Έμμ΄ μ°κ²° μ°μ°μλ‘ λμνλ€.
// μ«μ νμ
, λΆλ¦¬μΈ νμ
, null νμ
, undefined νμ
λ°λ‘ μ μ© O
0 + ""; // "0"
-0 + ""; // "0"
NaN + ""; // "NaN"
Infinity + ""; // "Infinity"
null + ""; // "null"
μ«μ νμ
μΌλ‘ λ³ν
μ°μ μ°μ°μ(-, *, /)μ νΌμ°μ°μλ μ½λ λ¬Έλ§₯μ λͺ¨λ μ«μνμ
μ΄μ΄μΌ νλ€.
λ³νν μ μλ κ²½μ°, NaNμ λ°ννλ€.
+ λ¨ν μ°μ°μλ νΌμ°μ°μκ° μ«μ νμ
μ κ°μ΄ μλλ©΄ μ«μ νμ
μ κ°μΌλ‘ μ묡μ νμ
λ³νμ μννλ€.
λΉ λ¬Έμμ΄(''), λΉ λ°°μ΄([]), null, false β 0
(βμ£Όμβ)κ°μ²΄, λΉ λ°°μ΄μ΄ μλ λ°°μ΄(= κ°μ΄ μλ λ°°μ΄), undefined β NaN
λΆλ¦¬μΈ νμ
μΌλ‘ λ³ν
β μλ°μ€ν¬λ¦½νΈ μμ§μ΄ Falsy κ°μΌλ‘ νλ¨νλ κ°
β
9.3 λͺ
μμ νμ
λ³ν
λ¬Έμμ΄ νμ
μΌλ‘ λ³ν
String μμ±μ ν¨μλ₯Ό new ν€μλ μμ΄ νΈμΆνλ λ°©λ²
Object.prototype.toString λ©μλλ₯Ό μ¬μ©νλ λ°©λ²
λ¬Έμμ΄ μ°κ²° μ°μ°μλ₯Ό μ΄μ©νλ λ°©λ² β μ묡μ νμ
λ³ν
μ«μ νμ
μΌλ‘ λ³ν
Number μμ±μ ν¨μλ₯Ό new ν€μλ μμ΄ νΈμΆνλ λ°©λ²
parseInt, parseFloat ν¨μλ₯Ό μ¬μ©νλ λ°©λ²(λ¬Έμμ΄λ§ μ«μ νμ
μΌλ‘ λ³ν κ°λ₯)
μ°μ μ°μ°μ(+λ¨ν, *μ°μ )λ₯Ό μ¬μ©νλ λ°©λ² β μ묡μ νμ
λ³ν
λΆλ¦¬μΈ νμ
μΌλ‘ λ³ν
Boolean μμ±μ ν¨μλ₯Ό new ν€μλ μμ΄ νΈμΆνλ λ°©λ²
!(λΆμ λ
Όλ¦¬ μ°μ°μλ₯Ό λ λ² μ¬μ©νλ λ°©λ²)
β
9.4 λ¨μΆ νκ°(short-circuit evaluation)
λ
Όλ¦¬ μ°μ°μλ₯Ό μ¬μ©ν λ¨μΆ νκ°
λ
Όλ¦¬κ³±(&&)
μ’ν β μ°νμΌλ‘ νκ°κ° μ§νλκ³
λ κ°μ νΌμ°μ°μκ° λͺ¨λ trueλ‘ νκ°λ λ, trueλ₯Ό λ°νν¨
λ°λΌμ λ
Όλ¦¬ μ°μ°μ κ²°κ³Όλ₯Ό κ²°μ νλ κ²μ λ λ²μ§Έ νΌμ°μ°μ
λ
Όλ¦¬ν©(||)
μ’ν β μ°νμΌλ‘ νκ°κ° μ§νλκ³
λ κ°μ νΌμ°μ°μ.μ€ νλλ§ trueλ‘ νκ°λμ΄λ, trueλ₯Ό λ°νν¨
λ°λΌμ λ
Όλ¦¬ μ°μ°μ κ²°κ³Όλ₯Ό κ²°μ νλ κ²μ 첫 λ²μ§Έ νΌμ°μ°μ
π μ₯μ 1. ifλ¬Έμ λ체ν μ μλ€.
π μ₯μ 2. κ°μ²΄λ₯Ό κ°λ¦¬ν€κΈ°λ₯Ό κΈ°λνλ λ³μκ° null λλ undefined κ° μλμ§ νμΈνκ³ νλ‘νΌν°λ₯Ό μ°Έμ‘°ν λ μ μ©νλ€.
κ°μ²΄ : {key:value}λ‘ κ΅¬μ±λ νλ‘νΌν°μ μ§ν©
λ§μ½, κ°μ²΄λ₯Ό κ°λ¦¬ν€κΈ°λ₯Ό κΈ°λνλ λ³μμ κ°μ΄ κ°μ²΄κ° μλλΌ null/undefinedμΈ κ²½μ°, κ°μ²΄ μ°Έμ‘°μ TypeError λ°μ(νλ‘κ·Έλ¨ κ°μ μ’
λ£)
π μ₯μ 2. ν¨μ λ§€κ°λ³μμ κΈ°λ³Έκ°μ μ€μ ν λ μ μ©νλ€.
ν¨μλ₯Ό νΈμΆν λ μΈμλ₯Ό μ λ¬νμ§ μμΌλ©΄ λ§€κ°λ³μμλ undefinedκ° ν λΉλλ€.
μ΅μ
λ 체μ΄λ μ°μ°μ
μ’νμ νΌμ°μ°μκ° null λλ undefinedμΌ κ²½μ°, undefined λ°ν
κ·Έλ μ§ μμ κ²½μ°, μ°νμ νλ‘νΌν°λ₯Ό μ°Έμ‘°
λ
Όλ¦¬κ³±(&&) μ°μ°μ vs μ΅μ
λ 체μ΄λ μ°μ°μ
λ
Όλ¦¬κ³± μ°μ°μ : μ’ν νΌμ°μ°μκ° Falsyκ°μ΄λ©΄, μ’ν νΌμ°μ°μλ₯Ό κ·Έλλ‘ λ°ννλ€. (λ¨, 0 λλ ''μ κ°μ²΄λ‘ νκ°λ λλ μλ€.)
μ΅μ
λ 체μ΄λ : μ’ν νΌμ°μ°μκ° Falsyκ°μ΄λΌλ null λλ undefined λ§ μλλ©΄, μ°νμ νλ‘νΌν°λ₯Ό μ°Έμ‘°νλ€.
null λ³ν© μ°μ°μ
μ’νμ νΌμ°μ°μκ° null λλ undefinedμΌ κ²½μ°, μ°νμ νΌμ°μ°μλ₯Ό λ°ν
κ·Έλ μ§ μμ κ²½μ°, μ’νμ νλ‘νΌν°λ₯Ό μ°Έμ‘°
λ³μμ κΈ°λ³Έκ°μ μ€μ ν λ μ μ©νλ€.
κΈ°μ‘΄ : λ
Όλ¦¬ν©(||)μ μ¬μ©ν λ¨μΆ νκ° λ₯Ό ν΅ν΄ λ³μμ κΈ°λ³Έκ°μ μ€μ νλ€.
μ’νμ νΌμ°μ°μκ° falseλ‘ νκ°λλ Falsyκ°μ΄λ©΄ μ°νμ νΌμ°μ°μλ₯Ό λ°ννλ€.
λ¨, 0 μ΄λ ''μ κΈ°λ³Έκ°μΌλ‘μ μ νΈνλ€λ©΄ μκΈ°μΉ μμ λμμ΄ λ°μ
null λ³ν©μ°μ°μ ??λ μ’νμ νΌμ°μ°μκ° Falsyκ°μ΄λΌλ nullλλ undefinedκ° μλλ©΄ μ’νμ νΌμ°μ°μλ₯Ό κ·Έλλ‘ λ°ννλ€.
π©π» λ΄ κ°λ° κ²½ν νκ³
νλ‘μ νΈμμ, λΉ λ¬Έμμ΄("")λ νΉμ κ°μΌλ‘ μ μ§νκ³ μΆμμ§λ§, || μ°μ°μλ₯Ό μ¬μ©ν΄ λΉ λ¬Έμμ΄μ΄ κΈ°λ³Έκ°μΌλ‘ λ체λλ λ¬Έμ κ° μκΈ΄ μ μ΄ μμλ€.
μλ₯Ό λ€λ©΄, μλ μ½λμμ dataκ° "" μ΄μ΄λ κ·Έλλ‘ resμ ν λΉνκ³ μΆμμ§λ§, "default"κ° ν λΉλλ λ¬Έμ ..
μ΄λ null λ³ν© μ°μ°μ(??)λ₯Ό μΌλ€λ©΄ λ λμκ² λ€λ μκ°μ΄ λ€μλ€. λ€μμλ ?? μ¨λ΄μΌμ§!