π λͺ¨λ μλ°μ€ν¬λ¦½νΈ κ΅μ¬) 9μ₯. νμ λ³νκ³Ό λ¨μΆ νκ°
01. νμ λ³νμ΄λ?
- λͺ μμ νμ λ³ν / νμ μΊμ€ν : κ°λ°μκ° μλλ‘ κ°μ νμ μ λ³ν
- μ묡μ νμ λ³ν / νμ κ°μ λ³ν : ννμμ νκ°νλ λμ€μ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ μ묡μ μΌλ‘ νμ μ΄ μλ λ³ν
02. μ묡μ νμ λ³ν
μλ°μ€ν¬λ¦½νΈ μμ§μ΄ ννμμ νκ°ν λ κ°λ°μμ μλμ μκ΄μμ΄ μ½λμ λ¬Έλ§₯μ κ³ λ €ν΄ λ°μ΄ν° νμ μ κ°μ λ‘ λ³ννλ κ²μ λ§νλ€.
1) λ¬Έμμ΄ νμ μΌλ‘ λ³ν
π‘ 'ν νλ¦Ώ 리ν°λ΄μ ννμ μ½μ 'μ ννμμ νκ° κ²°κ³Όλ₯Ό λ¬Έμμ΄ νμ μΌλ‘ μ묡μ νμ λ³ννλ€.
`1 + 1 = ${1 + 1}` // -> "1 + 1 = 2"
μμλ₯Ό ν΅ν΄ μ΄ν΄λ³΄λλ‘ νμ.
π₯οΈ μμ μ½λ
// μ«μ νμ
0 + '' // -> "0"
-0 + '' // -> "0"
1 + '' // -> "1"
-1 + '' // -> "-1"
NaN + '' // -> "NaN"
Infinity + '' // -> "Infinity"
-Infiniti + '' // -> "-Infinity"
// λΆλ¦¬μΈ νμ
true + '' // -> "true"
false + '' // -> "false"
// null νμ
null + '' // -> "null"
// undefined νμ
undefined + '' // -> "undefined"
// μ¬λ² νμ
(Symbol()) + '' // -> TypeError
// κ°μ²΄ νμ
({}) + '' // -> "[object Object]"
Math + '' // -> "[object Math]"
[] + '' // -> ""
[10, 20] + '' // -> "10,20"
(function(){}) + '' // -> "function(){}"
Array + '' // -> "function Array() {[native code]}"
2) μ«μ νμ μΌλ‘ λ³ν
π₯οΈ μμ μ½λ <μ°μ μ°μ°μ>
1 - '1' // -> 0
1 * '10' // -> 10
1 / 'one' // -> NaN (μ°μ μ°μ°μ μνν μ μμΌλ―λ‘)
π₯οΈ μμ μ½λ <λΉκ΅ μ°μ°μ>
'1' > 0 // -> true
π‘ + λ¨ν μ°μ°μλ νΌμ°μ°μκ° μ«μ νμ μ κ°μ΄ μλλ©΄ μ«μ νμ μ κ°μΌλ‘ μ묡μ νμ λ³νμ μννλ€.
π₯οΈ μμ μ½λ
// λ¬Έμμ΄ νμ
+'' // -> 0
+'0' // -> 0
+'1' // -> 1
+'string' // -> NaN
// λΆλ¦¬μΈ νμ
+true // -> 1
+false // -> 0
// null νμ
+null // -> 0
// undefined νμ
+undefined // -> NaN
// μ¬λ² νμ
+Symbol() // -> TypeError
// κ°μ²΄ νμ
+{} // -> NaN
+[] // -> 0
+[10, 20] // -> NaN
+(function(){}) // -> NaN
β οΈ λ°λμ κΈ°μ΅ν΄λκΈ°
- 0λ‘ λ³ν : λΉ λ¬Έμμ΄(' '), λΉ λ°°μ΄([ ]), null, false
- 1λ‘ λ³ν : true
- λ³νλμ§ μμΌλ―λ‘ NaN : κ°μ²΄, λΉ λ°°μ΄μ΄ μλ λ°°μ΄ undefined
3) λΆλ¦¬μΈ νμ μΌλ‘ λ³ν
if λ¬Έμ΄λ for λ¬Έκ³Ό κ°μ μ μ΄λ¬Έ λλ μΌν 쑰건 μ°μ°μμ 쑰건μμ λΆλ¦¬μΈ κ°μΌλ‘ νκ°λμ΄μΌ νλ ννμμ΄λ€.
μλ°μ€ν¬λ¦½νΈ μμ§μ 쑰건μμ νκ° κ²°κ³Όλ₯Ό λΆλ¦¬μΈ νμ μΌλ‘ μ묡μ νμ λ³ννλ€.
β οΈ μλ°μ€ν¬λ¦½νΈ μμ§μ λΆλ¦¬μΈ νμ μ΄ μλ κ°μ Truthy κ°(μ°ΈμΌλ‘ νκ°λλ κ°) λλ Falsy κ°(κ±°μ§μΌλ‘ νκ°λλ κ°)μΌλ‘ ꡬλΆνλ€.
β‘οΈ Truthy κ°μ trueλ‘, Falsy κ°μ falseλ‘ μ묡μ νμ λ³νλλ κ²μ΄λ€.
π‘ falseλ‘ νκ°λλ Falsy κ°μ μμ보μ. (μ΄μΈμ λͺ¨λ κ°μ trueλ‘ νκ°λλ Truthy κ°μ΄λ€.)
- false
- undefined
- null
- 0, -0
- NaN
- ' '(λΉ λ¬Έμμ΄)
03. λͺ μμ νμ λ³ν
κ°λ°μμ μλμ λ°λΌ λͺ μμ μΌλ‘ νμ μ λ³ννλ κ²μ λ§νλ€.
1) λ¬Έμμ΄ νμ μΌλ‘ λ³ν
λ¬Έμμ΄ νμ μ΄ μλ κ°μ λ¬Έμμ΄ νμ μΌλ‘ λ³ννλ λ°©λ²μ μμ보μ.
- String μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
- Object.prototype.toString λ©μλλ₯Ό μ¬μ©νλ λ°©λ²
- λ¬Έμμ΄ μ°κ²° μ°μ°μλ₯Ό μ΄μ©νλ λ°©λ²
π₯οΈ μμ μ½λ
// 1. String μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
// μ«μ νμ
=> λ¬Έμμ΄ νμ
String(1); // -> "1"
String (NaN); // -> "NaN"
String(Infinity); // -> "Infinity"
// λΆλ¦¬μΈ νμ
=> λ¬Έμμ΄ νμ
String(true); // -> "true"
String(false); // -> "false"
// 2. Object.prototype.toString λ©μλλ₯Ό μ¬μ©νλ λ°©λ²
// μ«μ νμ
=> λ¬Έμμ΄ νμ
(1).toString(); // -> "1"
(NaN).toString(); // -> "NaN"
(Infinity).toString(); // -> "Infinity"
// λΆλ¦¬μΈ νμ
=> λ¬Έμμ΄ νμ
(true).toString(); // -> "true"
(false).toString(); // -> "false"
// 3. λ¬Έμμ΄ μ°κ²° μ°μ°μλ₯Ό μ΄μ©νλ λ°©λ²
// μ«μ νμ
=> λ¬Έμμ΄ νμ
1 + ''; // -> "1"
NaN + ''; // -> "NaN"
Infinity + ''; // -> "Infinity"
// λΆλ¦¬μΈ νμ
=> λ¬Έμμ΄ νμ
true + ''; // -> "true"
false + ''; // -> "false"
2) μ«μ νμ μΌλ‘ λ³ν
μ«μ νμ μ΄ μλ κ°μ μ«μ νμ μΌλ‘ λ³ννλ λ°©λ²μ μμ보μ.
- Number μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
- parseInt.parseFloat ν¨μλ₯Ό μ¬μ©νλ λ°©λ²(λ¬Έμμ΄λ§ μ«μ νμ μΌλ‘ λ³ν κ°λ₯)
- + λ¨ν μ°μ μ°μ°μλ₯Ό μ΄μ©νλ λ°©λ²
- * μ°μ μ°μ°μλ₯Ό μ΄μ©νλ λ°©λ²
π₯οΈ μμ μ½λ
// 1. Number μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
// λ¬Έμμ΄ νμ
=> μ«μ νμ
Number('0'); // -> 0
Number('-1'); // -> -1
// λΆλ¦¬μΈ νμ
=> μ«μ νμ
Number(true); // -> 1
Number(false); // -> 0
// 2. parseInt.parseFloat ν¨μλ₯Ό μ¬μ©νλ λ°©λ²(λ¬Έμμ΄λ§ μ«μ νμ
μΌλ‘ λ³ν κ°λ₯)
// λ¬Έμμ΄ νμ
=> μ«μ νμ
parseInt('0'); // -> 0
parseInt('-1'); // -> -1
// 3. + λ¨ν μ°μ μ°μ°μλ₯Ό μ΄μ©νλ λ°©λ²
// λ¬Έμμ΄ νμ
=> μ«μ νμ
+'0'; // -> 0
+'-1'; // -> -1
// λΆλ¦¬μΈ νμ
=> μ«μ νμ
+true; // -> 1
+false; // -> 0
// 4. * μ°μ μ°μ°μλ₯Ό μ΄μ©νλ λ°©λ²
// λ¬Έμμ΄ νμ
=> μ«μ νμ
'0' * 1; // -> 0
'-1' * 1; // -> -1
// λΆλ¦¬μΈ νμ
=> μ«μ νμ
true * 1; // -> 1
false * 1; // -> 0
3) λΆλ¦¬μΈ νμ μΌλ‘ λ³ν
λΆλ¦¬μΈ νμ μ΄ μλ κ°μ λΆλ¦¬μΈ νμ μΌλ‘ λ³ννλ λ°©λ²μ μμ보μ.
- Boolean μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
- ! λΆμ λ Όλ¦¬ μ°μ°μλ₯Ό λ λ² μ¬μ©νλ λ°©λ²
π₯οΈ μμ μ½λ
// 1. Booleann μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
// λ¬Έμμ΄ νμ
=> λΆλ¦¬μΈ νμ
Boolean('x'); // -> true
Boolean(''); // -> false
Boolean('false');// -> true
// μ«μ νμ
=> λΆλ¦¬μΈ νμ
Boolean(0); // -> false
Boolean(1); // -> true
Boolean(NaN); // -> false
Boolean(Infinity); // -> true
// null νμ
=> λΆλ¦¬μΈ νμ
Boolean(null); // -> false
// undefined νμ
=> λΆλ¦¬μΈ νμ
Boolean(undefined); // -> false
// κ°μ²΄ νμ
=> λΆλ¦¬μΈ νμ
Boolean({}); // -> true
Boolean([]); // -> true
// 2. ! λΆμ λ
Όλ¦¬ μ°μ°μλ₯Ό λ λ² μ¬μ©νλ λ°©λ²
// λ¬Έμμ΄ νμ
=> λΆλ¦¬μΈ νμ
!!'x'; // -> true
!!''; // -> false
!!'false'; // -> true
// μ«μ νμ
=> λΆλ¦¬μΈ νμ
!!0; // -> false
!!1; // -> true
!!NaN; // -> false
!!Infinity; // -> true
// null νμ
=> λΆλ¦¬μΈ νμ
!!null; // -> false
// undefined νμ
=> λΆλ¦¬μΈ νμ
!!undefined; // -> false
// κ°μ²΄ νμ
=> λΆλ¦¬μΈ νμ
!!{}; // -> true
!![]; // -> true
04. λ¨μΆ νκ°
1) λ Όλ¦¬ μ°μ°μλ₯Ό μ¬μ©ν λ¨μΆ νκ°
λ Όλ¦¬κ³±(&&) μ°μ°μμ λ Όλ¦¬ν©(||) μ°μ°μλ λ Όλ¦¬ μ°μ°μ κ²°κ³Όλ₯Ό κ²°μ νλ νΌμ°μ°μλ₯Ό νμ λ³ννμ§ μκ³ κ·Έλλ‘ λ°ννλ€.
ννμμ νκ°νλ λμ€μ νκ° κ²°κ³Όκ° νμ λ κ²½μ° νκ° κ³Όμ μ μλ΅νλ κ²μ λ¨μΆ νκ°λΌκ³ νλ€.
λ Όλ¦¬κ³±(&&) μ°μ°μλ λ κ°μ νΌμ°μ°μκ° λͺ¨λ trueλ‘ νκ°λ λ trueλ₯Ό λ°ννλ€.
(μ’νμμ μ°νμΌλ‘ νκ°κ° μ§νλλ€.)
μμλ₯Ό ν΅ν΄ μ΄ν΄λ³΄μ.
π₯οΈ μμ μ½λ
'Cat' && 'Dog' // -> "Dog"
첫 λ²μ§Έ νΌμ°μ°μ 'Cat'μ Truthy κ°μ΄λ―λ‘ trueλ‘ νκ°λλ€.
μ΄λ λ Όλ¦¬κ³± μ°μ°μλ λ Όλ¦¬ μ°μ°μ κ²°κ³Όλ₯Ό κ²°μ νλ λ λ²μ§Έ νΌμ°μ°μ, μ¦ λ¬Έμμ΄ 'Dog'λ₯Ό κ·Έλλ‘ λ°ννλ€.
λ Όλ¦¬ν©(||) μ°μ°μλ λ κ°μ νΌμ°μ°μ μ€ νλλ§ trueλ‘ νκ°λμ΄λ trueλ₯Ό λ°ννλ€.
(μ’νμμ μ°νμΌλ‘ νκ°κ° μ§νλλ€.)
μμλ₯Ό ν΅ν΄ μ΄ν΄λ³΄μ.
π₯οΈ μμ μ½λ
'Cat' || 'Dog' // -> "Cat"
첫 λ²μ§Έ νΌμ°μ°μ 'Cat'μ Truthy κ°μ΄λ―λ‘ trueλ‘ νκ°λλ€.
μ΄λ λ Όλ¦¬ν© μ°μ°μλ λ Όλ¦¬ μ°μ°μ κ²°κ³Όλ₯Ό κ²°μ νλ 첫 λ²μ§Έ νΌμ°μ°μ, μ¦ λ¬Έμμ΄ 'Cat'μ κ·Έλλ‘ λ°ννλ€.
λ¨μΆ νκ° ννμ | νκ° κ²°κ³Ό |
true && anything | anything |
false && anything | false |
true || anything | true |
false || anything | anything |
2) μ΅μ λ 체μ΄λ μ°μ°μ
μ΅μ λ 체μ΄λ μ°μ°μ ?. λ μ’νμ νΌμ°μ°μκ° null λλ undefinedμΈ κ²½μ° undefinedλ₯Ό λ°ννκ³ , κ·Έλ μ§ μμΌλ©΄ μ°νμ νλ‘νΌν° μ°Έμ‘°λ₯Ό μ΄μ΄κ°λ€.
π‘ μ΅μ λ 체μ΄λ μ°μ°μ ?. λ κ°μ²΄λ₯Ό κ°λ¦¬ν€κΈ°λ₯Ό κΈ°λνλ λ³μκ° null λλ undefinedκ° μλμ§ νμΈνκ³ νλ‘νΌν°λ₯Ό μ°Έμ‘°ν λ μ μ©νλ€.
π₯οΈ μμ μ½λ
var elem = null;
// elem null λλ undefinedμ΄λ©΄ undefinedλ₯Ό λ°ννκ³ ,
// κ·Έλ μ§ μμΌλ©΄ μ°νμ νλ‘νΌν° μ°Έμ‘°λ₯Ό μ΄μ΄κ°λ€.
var value = elem?.value;
console.log(value); // undefined
3) null λ³ν© μ°μ°μ
null λ³ν© μ°μ°μ ?? λ μ’νμ νΌμ°μ°μκ° null λλ undefinedμΈ κ²½μ° μ°νμ νΌμ°μ°μλ₯Ό λ°ννκ³ , κ·Έλ μ§ μμΌλ©΄ μ’νμ νΌμ°μ°μλ₯Ό λ°ννλ€.
π‘ null λ³ν© μ°μ°μ ?? λ λ³μμ κΈ°λ³Έκ°μ μ€μ ν λ μ μ©νλ€.
π₯οΈ μμ μ½λ
// μ’νμ νΌμ°μ°μκ° null λλ undefinedμ΄λ©΄ μ°νμ νΌμ°μ°μλ₯Ό λ°ννκ³ ,
// κ·Έλ μ§ μμΌλ©΄ μ’νμ νΌμ°μ°μλ₯Ό λ°ννλ€.
var foo = null ?? 'defalut string';
console.log(foo); // "default string"
π μ°Έκ³ μλ£
[무λ£] λͺ¨λ μλ°μ€ν¬λ¦½νΈ λ₯λ€μ΄λΈ μ€ν°λ - μΈνλ° | κ°μ
γλͺ¨λ μλ°μ€ν¬λ¦½νΈ λ₯λ€μ΄λΈγ μ± λ΄μ©μ κ·Έλλ‘ λ°λΌκ°λ μ€ν°λ μμμ λλ€. ν¨κ» 곡λΆνλ©΄ ν¨μ¬ μ¬μμ§ κ±°μμ!, - κ°μ μκ° | μΈνλ°
www.inflearn.com