09_νμ λ³νκ³Ό λ¨μΆ νκ°
9.1 νμ λ³ν ?
μλ°μ€ν¬λ¦½νΈμ λͺ¨λ κ°μ νμ μ κ°μ§λλ°,
- κ°λ°μμ μλμ λ°λΌ κ°μ νμ
μ λ³ννλ κ²μ
-> λͺ μμ νμ λ³ν λλ νμ μΊμ€ν μ΄λΌκ³ νλ€. - κ°λ°μμ μλμλ μκ΄μμ΄ ννμμ νκ°νλ λμ€μ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ μ묡μ μΌλ‘€ νμ
μ΄ μλ λ³νλλ κ²μ
-> μ묡μ νμ λ³ν λλ νμ κ°μ λ³ν μ΄λΌκ³ νλ€.
μλ°μ€ν¬λ¦½νΈλ κ°κΈμ μλ¬λ₯Ό λ°μμν€μ§ μλλ‘ μ묡μ μΌλ‘ νμ λ³νμ ν΅ν΄ ννμμ νκ°
κ·Έλ λ€κ³ λͺ μμ νμ λ³νμ΄λ μ묡μ νμ λ³νμ΄λ κΈ°μ‘΄ μμκ°μ μ§μ λ³κ²½νλ κ²μ μλλ€.
-> μμ κ°μ λ³κ²½ λΆκ°λ₯ν κ° μ΄λ€.
μ¦, νμ λ³νμ΄λ κΈ°μ‘΄ μμ κ°μ μ¬μ©ν΄ λ€λ₯Έ νμ μ μλ‘μ΄ κ°μ μμ± νλ κ²
9.2 μ묡μ νμ λ³ν
μλ°μ€ν¬λ¦½νΈ μμ§μ΄ ννμμ νκ°ν λ, κ°λ°μμ μλμ μκ΄μμ΄ μ½λμ λ¬Έλ§₯μ κ³ λ €ν΄ μ묡μ μΌλ‘ λ°μ΄ν° νμ μ κ°μ λ³ν νλ κ²
9.2.1 λ¬Έμμ΄ νμ μΌλ‘ λ³ν
- + λλ ν νλ¦Ώ 리ν°λ΄
- ν νλ¦Ώ 리ν°λ΄μ ννμμ νκ° κ²°κ³Όλ₯Ό λ¬Έμμ΄ νμ μΌλ‘ μ묡μ λ³ν
- λ¬Έμμ΄ μ°κ²° μ°μ°μλ μ½λμ λ¬Έλ§₯μ λͺ¨λ λ¬Έμμ΄ νμ μ΄μ΄μΌ νλ€.
μλ°μ€ν¬λ¦½νΈ μμ§μ λ¬Έμμ΄ μ°κ²° μ°μ°μλ₯Ό λ§λλ©΄, λ¬Έμμ΄ νμ μ΄ μλ κ°μ λ¬Έμμ΄ νμ μΌλ‘ μ묡μ νμ λ³ννμ¬ μν
// μ«μ νμ
0 + '' // "0"
-0 + '' // "0"
1+ '' // "1"
-1 + '' // "-1"
NaN + '' // "NaN"
Infinity + '' // "Infinity"
-Infinity + '' // "-Infinity"
// boolean νμ
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]}"
9.2.2 μ«μ νμ μΌλ‘ λ³ν
- +, -, / λ λͺ¨λ μ°μ μ°μ°μ
- μ°μ μ°μ°μμ λͺ¨λ νΌμ°μ°μλ μ½λ λ¬Έλ§₯μ λͺ¨λ μ«μ νμ μ΄μ΄μΌ νλ€.
- μλ°μ€ν¬λ¦½νΈ μμ§μ + λ¨ν μ°μ°μλ₯Ό λ§λλ©΄
-> νΌμ°μ°μκ° μ«μ νμ μ κ°μ΄ μλλ©΄ μ«μ νμ μ κ°μΌλ‘ μ묡μ νμ λ³νμ μν
μλ°μ€ν¬λ¦½νΈ μμ§μ μ°μ μ°μ°μλ₯Ό λ§λλ©΄, μ«μ νμ μ΄ μλ κ°μ μ«μ νμ μΌλ‘ μ묡μ νμ λ³ννμ¬ λμ
μ΄ λ, μ«μ νμ μΌλ‘ λ³νν μ μλ κ²½μ°λ μ°μ μ°μ°μ μνν μ μμΌλ―λ‘ ννμμ κ²°κ³Όλ NaNμ΄ λλ€.
// μ«μ νμ
+'' // 0
+'0' // 0
+'1' // 1
+'string' // NaN
// boolean νμ
+true // 1
+false // 0
// null νμ
+null // 0
// undefined νμ
+undefined // NaN
// μ¬λ² νμ
+Symbol() // TypeError
// κ°μ²΄ νμ
+{} // NaN
+[] // 0
+[10, 20] // NaN
+(function(){}) // NaN
λΉκ΅ μ°μ°μ
'1' > 0 // true
λΉκ΅ μ°μ°μλ νΌμ°μ°μμ ν¬κΈ°λ₯Ό λΉκ΅νλ―λ‘, μ½λμ λ¬Έλ§₯μ λͺ¨λ μ«μ νμ μ΄μ΄μΌ νλ€.
9.2.3 boolean νμ μΌλ‘ λ³ν
- if λ¬Έκ³Ό for λ¬Έκ³Ό κ°μ μ μ΄λ¬Έ λλ μΌν 쑰건 μ°μ°μμ 쑰건μμ
-> λ Όλ¦¬μ μ°Έ / κ±°μ§ μΌλ‘ νκ°λμ΄μΌ νλ ννμ μΌλ‘
-> 쑰건μμ νκ³Ό κ²°κ³Όλ₯Ό λΆλ¦¬μΈ νμ μΌλ‘ μ묡μ νμ λ³νμ νλ€. - μλ°μ€ν¬λ¦½νΈ μμ§μ λΆλ¦¬μΈ νμ
μ΄ μλ κ°μ
-> Truthy κ° λλ Falsy κ°μΌλ‘ ꡬλΆν΄ κ°κ° trueμ falseλ‘ μ묡μ νμ λ³ν νλ€.
-> Truthy κ° λλ Falsy κ° μμ λλν(!)λ₯Ό λΆμ΄μ£Όλ©΄ κ°κ° trueμ falseλ‘ μ λ¬λλ€. - falseλ‘ νκ°λλ Falsy κ°
-> false
-> undefined
-> null
-> 0, -0
-> NaN
-> ‘’(λΉ λ¬Έμμ΄)
9.3 λͺ μμ νμ λ³ν
9.3.1 λ¬Έμμ΄ νμ μΌλ‘ λ³ν
1. String() μμ±μ ν¨μ μ¬μ©
// μ«μ νμ
=> λ¬Έμμ΄ νμ
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"
9.3.2 μ«μ νμ μΌλ‘ λ³ν
1. Number() μμ±μ ν¨μλ₯Ό μ¬μ©
// λ¬Έμμ΄ νμ
β μ«μ νμ
Number('0'); // 0
Number('-1'); // -1
Number('10.53'); // 10.53
// λΆλ¦¬μΈ νμ
β μ«μ νμ
Number(true); // 1
Number(false); // 0
2. parseInt, parseFloat ν¨μ μ¬μ© (λ¬Έμμ΄ λ§)
parseInt('0'); // 0
parseInt('-1'); // -1
parseFloat('10.53'); // 10.53
3. + λ¨ν μ°μ μ°μ°μλ₯Ό μ¬μ©
// λ¬Έμμ΄ νμ
β μ«μ νμ
+'0'; // 0
+'-1'; // -1
+'10.53'; // 10.53
// λΆλ¦¬μΈ νμ
β μ«μ νμ
+true; // 1
+false; // 0
4. * μ°μ μ°μ°μ μ¬μ©
// λ¬Έμμ΄ νμ
β μ«μ νμ
'0' * 1; // 0
'-1' * 1; // -1
'10.53' * 1; // 10.53
// λΆλ¦¬μΈ νμ
β μ«μ νμ
true * 1; // 1
false * 1; // 0
9.3.3 boolean νμ μΌλ‘ λ³ν
1. Boolean() μ¬μ©
// λ¬Έμμ΄ νμ
β λΆλ¦¬μΈ νμ
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
9.4 λ¨μΆ νκ°
νμ λ³νμ νμ§ μκ³ κ·Έλλ‘ λ°ν νλλ° μ΄λ₯Ό λ¨μΆ νκ° λΌκ³ νλ€.
- λ¨μΆ νκ°λ ννμμ νκ°νλ λμ€μ νκ°κ²°κ³Όκ° νμ λ κ²½μ°
-> λλ¨Έμ§ κ²°κ³Όλ₯Ό μλ΅
-> λ¨μΆνκ°λ₯Ό μ¬μ©νλ©΄ ifλ¬Έ λ체
-> μΌν 쑰건 μ°μ°μλ if-else λ¬Έμ λ체
λ¨μΆ νκ° ννμ νκ³Ό κ²°κ³Ό
true ¦¦ anything true
false ¦¦ anything anything
true && anything true
false && anything false
9.4.1 λ Όλ¦¬ μ°μ°μλ₯Ό μ¬μ©ν λ¨μΆ νκ°
λ Όλ¦¬ν©|| λλ λ Όλ¦¬κ³±&&
- ννμμ νκ° κ²°κ³Όλ λΆλ¦¬μΈ κ°μ΄ μλ μλ μλ€
- λ Όλ¦¬ν©|| λλ λ Όλ¦¬κ³±&&. μ°μ°μ ννμμ μΈμ λ 2κ°μ νΌμ°μ°μ μ€ μ΄λ νμͺ½μΌλ‘ νκ°λλ€
- λ
Όλ¦¬κ³±&& μ°μ°μ λ λ κ°μ νΌμ°μ°μκ° λͺ¨λ trueλ‘ νκ°λ λ true λ₯Ό λ°ν.
-> μ’νμμ μ°νμΌλ‘ νκ°κ° μ§ν. - λ
Όλ¦¬ν©|| μ°μ°μλ
-> λ κ°μ νΌμ°μ°μ μ€ νλλ§ trueλ‘ νκ°λμ΄λ true λ₯Ό λ°ν.
'cat' || 'dog' // cat
false || 'dog' // dog
'cat' || false // cat
'cat' && 'dog' // dog
false && 'dog' // false
'cat' && false // false
'π Book-Talk > λͺ¨λ JS Deep Dive' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive_μμ κ°κ³Ό κ°μ²΄μ λΉκ΅ (0) | 2022.11.11 |
---|---|
λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive_κ°μ²΄ 리ν°λ΄ (0) | 2022.11.11 |
λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive_μ μ΄λ¬Έ (0) | 2022.11.10 |
λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive_μ°μ°μ (0) | 2022.11.10 |
λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive_λ°μ΄ν° νμ (2) | 2022.11.10 |