9.1 νμ λ³νμ΄λ?
κ°λ°μκ° μλμ μΌλ‘ νμ μ λ³ννλ κ² : λͺ μμ νμ λ³ν νΉμ νμ μΊμ€ν μ΄λΌκ³ ν¨.
JS μμ§μ μν΄ νμ μ΄ λ³νλλ κ² : μ묡μ νμ λ³ν λλ νμ κ°μ λ³ν μ΄λΌκ³ ν¨.
λ νμ μ λ³ν λͺ¨λ κΈ°μ‘΄ μμ κ°μ μ§μ λ³κ²½νλ κ²μ μλλ€.
πνμ λ³νμ΄ μΌμ΄λλμ§ μ½λλ₯Ό μμΈ‘ν μ μμ΄μΌ νλ€.
μ묡μ νμ μ λ°μνμ§ μλλ‘ ν΅μ ν μ μμ.
9.2 μ묡μ νμ λ³ν
- string + nuber => string+string
- string*number => number
!0 => true
1 + '2' -> '12'
λ¬Έμμ΄ νμ μΌλ‘ λ³ν
μμμ λ΄€λ―μ΄ '+' μ°μ°μλ νΌμ°μ°μ μ€ νλκ° λ¬Έμμ΄μ΄λ©΄ λ¬Έμμ΄ μ°κ²° μ°μ°μλ‘ λμνλ€.
console.log(10 + "10"); // 1010
μλμ μ½λλ λ¬Έμμ΄ μ°κ²° μ°μ°μλ‘ λμν κ²°κ³Όλ₯Ό νμΈν μ μλ€.
console.log(2 + "1" + 5); // 2715
console.log(2 + 7 + "1" + 5); // μ£Όμ : μ΄ κ²°κ³Όλ 915λ€.
λλ²μ§Έλ μ μ²΄κ° λ€ λ¬Έμμ΄ μ°κ²°λ‘ λμν κΉ? νκ³ ν
μ€νΈλ₯Ό ν΄λ³΄μλλ° μμ 2 + 7μ μ«μ μ°μ°μΌλ‘ μ²λ¦¬λλ€.
λ¬Έμμ΄ νμ
μΌλ‘ μ묡μ λ³νμ΄ μ΄λ£¨μ΄μ§λ μΆκ°μ μΈ μμλ μλμ κ°λ€.
0 + '' // '0'
-0 + '' // '0'
NaN + 'a' // NaNa
Infinity + '' // 'Infinity'
-Infinity + '' // '-Infinity'
true + ' ' + false + '' // 'true false'
[] + '' // ''
[1,2] + '' // '1,2'
Symbol() + '' // TypeError
μ΄ μΈμ κΆκΈν κ²μ΄ μλ€λ©΄ μ§μ ν΄λ³΄λ©΄μ νμΈν΄λ³΄λ©΄ μ’μ κ² κ°λ€. λ§μ§λ§μ Symbol()μ string νμ μΌλ‘ λ³νν μ μλ€.
μ«μ νμ μΌλ‘ λ³ν
'+' λ¨ν μ°μ°μλ νΌμ°μ°μκ° μ«μ νμ μ κ°μ΄ μλλ©΄, μ«μ νμ μ κ°μΌλ‘ μ묡μ μΌλ‘ νμ λ³νμ μννλ€.
+'' // 0
+'0' // 0
+'1' // 1
+'hello' // NaN
+true // 1
+false // 0
+null // 0
+[] // 0
+[1,2] // NaN
+function(){} // NaN
λΆλ¦¬μΈ νμ μΌλ‘ λ³ν
if, forλ¬Έκ³Ό κ°μ μ μ΄λ¬Έμ 쑰건μμ μ°Έ νΉμ κ±°μ§μΌλ‘ νκ°λμ΄μΌ νλ ννμμ΄λ€. μλ°μ€ν¬λ¦½νΈ μμ§μ 쑰건μμ νκ° κ²°κ³Όλ₯Ό λΆλ¦¬μΈ νμ μΌλ‘ μ묡μ νμ λ³ννλ€.
if ("") console.log("test1");
if (true) console.log("test2");
if (0) console.log("test3");
if ("a") console.log("test4");
if (null) console.log("test5");
// test2
// test4
=> μλ°μ€ν¬λ¦½νΈ μμ§μ λΆλ¦¬μΈ νμ μ΄ μλ κ°μ Truthy(μ°ΈμΌλ‘ νκ°λλ κ°) λλ Falsy(κ±°μ§μΌλ‘ νκ°λλ κ°)μΌλ‘ ꡬλΆνλ€.
- falseλ‘ νκ°λλ κ° : false, undefined, null, 0, -0, NaN, ''
- trueλ‘ νκ°λλ κ° : falseκ° μλ λͺ¨λ κ°. {}, [] μ κ°μ κ²λ€λ λͺ¨λ trueλ‘ νκ°λ¨.
9.4 λ¨μΆ νκ°
- λ Όλ¦¬κ³±(&&) μ°μ°μλ λκ°μ νΌμ°μ°μκ° λͺ¨λ true λ‘ νκ°λ λ true λ₯Ό λ°ννλ€. λ Όλ¦¬κ³± μ°μ°μλ μ’νμμ μ°νμΌλ‘ νκ°κ° μ§νλλ€.
- λ Όλ¦¬ν©(||) μ°μ°μλ λκ°μ νΌμ°μ°μ μ€ νλλ§ true λ‘ νκ°λμ΄λ true λ₯Ό λ°ννλ€. λ Όλ¦¬ν© μ°μ°μ λν μ’νμμ μ°νμΌλ‘ νκ°κ° μ§νλλ€.
λ Όλ¦¬κ³± μ°μ°μμ λ Όλ¦¬ν© μ°μ°μλ λ Όλ¦¬ μ°μ°μ κ²°κ³Όλ₯Ό κ²°μ νλ νΌμ°μ°μ λ₯Ό νμ λ³ννμ§ μκ³ κ·Έλλ‘ λ°ννλ€. μ΄λ₯Ό λ¨μΆ νκ°λΌ νλ€. λ¨μΆ νκ°λ ννμμ νκ°νλ λμ€μ νκ° κ²°κ³Όκ° νμ λ κ²½μ° λλ¨Έμ§ νκ° κ³Όμ μ μλ΅νλ κ²μ λ»νλ€.
// λ
Όλ¦¬κ³±(&&) μ°μ°μ
'a' && 'b' // => 'b'
false && 'b' // => false
'a' && false // => false
// λ
Όλ¦¬ν©(||) μ°μ°μ
'a' || 'b' // => 'a'
false || 'b' // => 'b'
'a' || false // => 'a'
λ¨μΆ νκ°λ₯Ό μ¬μ©νλ©΄ if λ¬Έμ λ체ν μ μλ€. μ΄λ€ μ‘°κ±΄μ΄ true μ¬μΌ μ€νλμ΄μΌ νλ€λ©΄, λ Όλ¦¬κ³±(&&) μ°μ°μ ννμμΌλ‘ μ΄λ₯Ό λ체νκ³ , μ‘°κ±΄μ΄ false μ¬μΌ μ€νλμ΄μΌ νλ€λ©΄ λ Όλ¦¬ν©(||) μ°μ°μ ννμμΌλ‘ μ΄λ₯Ό λ체ν μ μλ€.