07μ₯ μ°μ°μ
μ°μ°μλ νλ μ΄μμ ννμμ λμμΌλ‘ μ°μ°μ μνν΄ νλμ κ°μ λ§λ λ€. μ΄λ μ°μ°μ λμμ νΌμ°μ°μλΌ νλ€.
νΌμ°μ°μκ° "κ°"μ΄λΌλ λͺ μ¬μ μν μ νλ€λ©΄ μ°μ°μλ "νΌμ°μ°μλ₯Ό μ°μ°νμ¬ μλ‘μ΄ κ°μ λ§λ λ€"λΌλ λμ¬μ μν μ νλ€κ³ λ³Ό μ μλ€.
μ°μ μ°μ°μ
- μ΄ν μ°μ μ°μ°μ : 2κ°μ νΌμ°μ°μλ₯Ό μ°μ μ°μ°νμ¬ μ«μ κ°μ λ§λ λ€.
μ΄ν μ°μ μ°μ°μ | μλ―Έ | λΆμ ν¨κ³Ό |
+ | λ§μ | X (νΌμ°μ°μμ μ΄λ ν ν¨κ³Όλ μμ) |
- | λΊμ | X |
* | κ³±μ | X |
/ | λλμ | X |
% | λλ¨Έμ§ | X |
- λ¨ν μ°μ μ°μ°μ : 1κ°μ νΌμ°μ°μλ₯Ό μ°μ μ°μ°νμ¬ μ«μ κ°μ λ§λ λ€
λ¨ν μ°μ μ°μ°μ | μλ―Έ | λΆμ ν¨κ³Ό |
++ | μ¦κ° | νΌμ°μ°μμ κ°μ λ³κ²½νλ μ묡μ ν λΉμ΄ μ΄λ£¨μ΄μ§ |
-- | κ°μ | νΌμ°μ°μμ κ°μ λ³κ²½νλ μ묡μ ν λΉμ΄ μ΄λ£¨μ΄μ§ |
+ | μ΄λ ν ν¨κ³Όλ μλ€. μμλ₯Ό μμλ‘ λ°μ νμ§λ μμ (μ«μ νμ μΌλ‘ λ³νν κ°μ μμ±ν΄μ λ°ν) |
X |
- | μμλ₯Ό μμλ‘, μμλ₯Ό μμλ‘ λ°μ ν κ°μ λ°ν (μ«μ νμ μΌλ‘ λ³νν κ°μ μμ±ν΄μ λ°ν) |
X |
μ¦κ°/κ°μ (++/--) μ°μ°μλ μμΉμ μλ―Έκ° μλ€.
- νΌμ°μ°μ μμ μμΉν μ μ μ¦κ°/κ°μ μ°μ°μλ λ¨Όμ νΌμ°μ°μμ κ°μ μ¦κ°/κ°μμν¨ ν, λ€λ₯Έ μ°μ°μ μννλ€.
- νΌμ°μ°μ λ€μ μμΉν νμ μ¦κ°/κ°μ μ°μ°μλ λ¨Όμ λ€λ₯Έ μ°μ°μ μνν ν, νΌμ°μ°μμ κ°μ μ¦κ°/κ°μμν¨λ€.
var x = 1, result;
x++;
console.log(x) // 1
x = 5
// μ ν λΉ νμ¦κ°
result = x++;
console.log(result, x); // 5 6
// μ κ°μ νν λΉ
result = x++;
console.log(result, x); // 5 5
// λΆνΈλ₯Ό λ°μ
-(-10); // 10
x = '1';
// λ¬Έμμ΄μ μ«μλ‘ νμ
λ³ν
console.log(+x); // 1
console.log(x); // '1'
x = true;
// λΆλ¦¬μΈ κ°μ μ«μλ‘ νμ
λ³ν
console.log(+x); // 1
console.log(x); // true
x = false;
// λΆλ¦¬μΈ κ°μ μ«μλ‘ νμ
λ³ν
console.log(+x); // 0
console.log(x); // false
x = 'Hello';
// λ¬Έμμ΄μ μ«μλ‘ νμ
λ³νν μ μμΌλ―λ‘ NaNμ λ°ν
console.log(+x); // NaN
console.log(x); // 'Hello'
// λΆνΈλ₯Ό λ°μ
-(-10) // 10
- λ¬Έμμ΄ μ°κ²° μ°μ°μ : +μ°μ°μλ νΌμ°μ°μ μ€ νλ μ΄μμ΄ λ¬Έμμ΄μΈ κ²½μ° λ¬Έμμ΄ μ°κ²° μ°μ°μλ‘ λμνλ€.
'1' + 2; // '12'
1 + null // 1 (false, nullμ 0μΌλ‘ νμ
λ³ν)
+undefined // NaN (undefinedλ μ«μλ‘ νμ
λ³ν λμ§ μμ)
μ΄ μμ μμ μ£Όλͺ©ν κ²μ κ°λ°μμ μλμλ μκ΄μμ΄ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ μ묡μ μΌλ‘ νμ μ΄ μλ λ³νλκΈ°λ νλ€λ κ²μ΄λ€. μ΄λ₯Ό μ묡μ νμ λ³ν λλ νμ κ°μ λ³νμ΄λΌκ³ νλ€.
ν λΉ μ°μ°μ
ν λΉ μ°μ°μλ μ°νμ μλ νΌμ°μ°μμ νκ° κ²½κ³Όλ₯Ό μ’νμ μλ λ³μμ ν λΉνλ€.
ν λΉ μ°μ°μ | μ | λμΌ νν | λΆμ ν¨κ³Ό |
= | x = 5 | x = 5 | O (μ’νμ λ³μμ κ°μ ν λΉνλ―λ‘ λ³μ κ°μ΄ λ³νλ λΆμ ν¨κ³Όκ° μλ€.) |
+= | x += 5 | x = x + 5 | O |
-= | x -= 5 | x = x - 5 | O |
*= | x *= 5 | x = x * 5 | O |
/= | x /= 5 | x = x / 5 | O |
%= | x %= 5 | x = x % 5 | O |
ν λΉλ¬Έμ κ°μΌλ‘ ννλλ ννμμΈ λ¬ΈμΌλ‘μ ν λΉλ κ°μΌλ‘ νκ°λλ€.
var a, b, c;
// μ°μ ν λΉ : μ€λ₯Έμͺ½μμ μΌμͺ½μΌλ‘ μ§ν
// 1. c = 0 μΌλ‘ νκ°
// 2. b = 0 μΌλ‘ νκ°
// 3. a = 0 μΌλ‘ νκ°
a = b = c = 0;
λΉκ΅ μ°μ°μ
λΉκ΅ μ°μ°μλ μ’νκ³Ό μ°νμ νΌμ°μ°μλ₯Ό λΉκ΅ν λ€μ κ·Έ κ²°κ³Όλ₯Ό λΆλ¦¬μΈ κ°μΌλ‘ λ°ννλ€.
λΉκ΅ μ°μ°μ | μλ―Έ | μ¬λ‘ | μ€λͺ | λΆμ ν¨κ³Ό |
== | λλ± λΉκ΅ | x == y | xμ yμ κ°μ΄ κ°μ | X |
=== | μΌμΉ λΉκ΅ | x === y | xμ yμ κ°κ³Ό νμ μ΄ κ°μ | X |
!= | λΆλλ± λΉκ΅ | x != y | xμ yμ κ°μ΄ λ€λ¦ | X |
!== | λΆμΌμΉ λΉκ΅ | x !== y | xμ yμ κ°κ³Ό νμ μ΄ λ€λ¦ | X |
λλ± λΉκ΅ μ°μ°μλ μ’νκ³Ό μ°νμ νΌμ°μ°μλ₯Ό λΉκ΅ν λ λ¨Όμ μ묡μ νμ λ³νμ ν΅ν΄ νμ μ μΌμΉμν¨ ν κ°μ κ°μΈμ§ λΉκ΅νλ€.
μΌμΉ λΉκ΅ μ°μ°μλ μ’νκ³Ό μ°νμ νΌμ°μ°μκ° νμ λ κ°κ³ κ°λ κ°μ κ²½μ°μ ννμ¬ trueλ₯Ό λ°ννλ€.
NaN === NaN; // false
Number.isNaN(NaN) // true
NaNλ μμ κ³Ό μΌμΉνμ§ μλ μ μΌν κ°μ΄λ€. λ°λΌμ μ«μκ° NaNμΈμ§ μ‘°μ¬νλ €λ©΄ Number.isNaN() ν¨μλ₯Ό μ΄μ©νλ€.
λ μλ°μ€ν¬λ¦½νΈμλ μμ 0κ³Ό μμ 0μ΄ μ‘΄μ¬νλλ° μ΄ λμ λΉκ΅νλ©΄ trueλ₯Ό λ°ννλ€.
ES6μ Object.is() λ©μλλ μμΈ‘ κ°λ₯ν μ νν λΉκ΅ κ²°κ³Όλ₯Ό λ°ννλ€.
Object.is(NaN, NaN) // true
λμ κ΄κ³ λΉκ΅ μ°μ°μλ νΌμ°μ°μμ ν¬κΈ°λ₯Ό λΉκ΅νμ¬ λΆλ¦¬μΈ κ°μ λ°ννλ€.
λμ κ΄κ³ λΉκ΅ μ°μ°μ | μμ | μ€λͺ | λΆμ ν¨κ³Ό |
> | x > y | xκ° yλ³΄λ€ ν¬λ€ | X |
< | x < y | xκ° yλ³΄λ€ μλ€ | X |
>= | x >= y | xκ° yλ³΄λ€ ν¬κ±°λ κ°λ€ | X |
<= | x <= y | xκ° yλ³΄λ€ μκ±°λ κ°λ€ | X |
μΌν 쑰건 μ°μ°μ
μΌν 쑰건 μ°μ°μλ 쑰건μμ νκ° κ²°κ³Όμ λ°λΌ λ°νν κ°μ κ²°μ νλ€.
μΌν 쑰건 μ°μ°μ ννμμ κ°μ²λΌ λ€λ₯Έ ννμμ μΌλΆκ° λ μ μμ΄ λ§€μ° μ μ©νλ€.
// 쑰건μ ? 쑰건μμ΄ trueμΌ λ λ°νκ° : 쑰건μμ΄ falseμΌ λ λ°νκ°
var result = score > 60 ? 'pass' : 'fail';
λ Όλ¦¬ μ°μ°μ
λ Όλ¦¬ μ°μ°μλ μ’νκ³Ό μ°νμ νΌμ°μ°μλ₯Ό λ Όλ¦¬ μ°μ°νλ€.
λ Όλ¦¬ μ°μ°μ | μλ―Έ | λΆμ ν¨κ³Ό |
|| | λ Όλ¦¬ν© (OR) | X |
&& | λ Όλ¦¬κ³± (AND) | X |
! | λΆμ (NOT) | X |
λ Όλ¦¬ λΆμ μ°μ°μλ μΈμ λ λΆλ¦¬μΈ κ°μ λ°ννλ€. λ§μ½ νΌμ°μ°μκ° λΆλ¦¬μΈ κ°μ΄ μλλ©΄ λΆλ¦¬μΈ νμ μΌλ‘ μ묡μ νμ λ³νλλ€.
λ Όλ¦¬ν© λλ λ Όλ¦¬κ³± ννμμ μΈμ λ 2κ°μ νΌμ°μ°μ μ€ μ΄λ νμͺ½μΌλ‘ νκ°λλ€.
// λ
Όλ¦¬ν© μ°μ°μ
true || true;
true || false;
false || false;
false || true;
// λ
Όλ¦¬κ³± μ°μ°μ
true && true;
true && false;
false && false;
false && true;
// λ
Όλ¦¬ λΆμ μ°μ°μ
!true // false
!0 // true
!'Hello'; // false
// λ¨μΆ νκ°
'Cat' && 'Dog'; // 'Dog'
λ λͺ¨λ₯΄κ°μ λ²μΉμ νμ©νλ©΄ 볡μ‘ν ννμμ μ’ λ κ°λ μ± λμ ννμμΌλ‘ λ³νν μ μλ€.
!(x || y) === (!x && !y)
μΌν μ°μ°μ
μΌν(,) μ°μ°μλ μΌμͺ½ νΌμ°μ°μλΆν° μ°¨λ‘λλ‘ νΌμ°μ°μλ₯Ό νκ°νκ³ λ§μ§λ§ νΌμ°μ°μμ νκ°κ° λλλ©΄ λ§μ§λ§ νΌμ°μ°μμ νκ° κ²°κ³Όλ₯Ό λ°ννλ€
var x, y, z;
x = 1, y = 2, z = 3 // 3
κ·Έλ£Ή μ°μ°μ
μκ΄νΈλ‘ νΌμ°μ°μλ₯Ό κ°μΈλ κ·Έλ£Ή μ°μ°μλ μ°μ°μ μ°μ μμκ° κ°μ₯ λλ€.
typeof μ°μ°μ
typeof μ°μ°μλ νΌμ°μ°μμ λ°μ΄ν° νμ μ λ¬Έμμ΄λ‘ λ°ννλ€.
typeof μ°μ°μλ‘ null κ°μ μ°μ°ν΄ 보면 'null'μ΄ μλ 'object'λ₯Ό λ°ννλ€. typeof μ°μ°μκ° λ°ννλ λ¬Έμμ΄μ 7κ°μ λ°μ΄ν° νμ κ³Ό μμ ν μΌμΉνμ§ μλλ€λ μ μ μ£Όμνμ.
var foo = null;
typeof foo === null; // false
foo === null; // true
μ§μ μ°μ°μ
ES7μμ λμ λ μ§μ μ°μ°μλ μ’νμ νΌμ°μ°μλ₯Ό λ°μΌλ‘, μ°νμ νΌμ°μ°μλ₯Ό μ§μλ‘ κ±°λ μ κ³±νμ¬ μ«μ κ°μ λ°ννλ€.
μ§μ μ°μ°μκ° λμ λκΈ° μ΄μ μλ Math.pow λ©μλλ₯Ό μ¬μ©νλ€.
2 ** 2 // 4
2 ** 0 // 2
(-5) ** 2 // 25
var num = 5;
num **= 2; // 25
κ·Έ μΈμ μ°μ°μ
-
μ°μ°μμ λΆμ ν¨κ³Ό
-
μ°μ°μ μ°μ μμ
μ°μ°μ μ°μ μμλ μ¬λ¬ κ°μ μ°μ°μλ‘ μ΄λ€μ§ λ¬Έμ΄ μ€νλ λ μ°μ°μκ° μ€νλλ μμλ₯Ό λ§νλ€.
μ°μ°μ μ°μ μμλ₯Ό λͺ¨λ κΈ°μ΅νκΈ° 보λ€λ μ°μ°μ μ°μ μμκ° κ°μ₯ λμ κ·Έλ£Ή μ°μ°μλ₯Ό μ¬μ©νμ¬ μ°μ μμλ₯Ό λͺ μμ μΌλ‘ μ‘°μ νλ κ²μ κΆμ₯νλ€.
μ°μ°μ κ²°ν© μμ
κ²°ν© μμ | μ°μ°μ |
μ’νμμ μ°ν | +, -, *, /, %, <, <=, >, >= ... |
μ°νμμ μ’ν | ++, --, ν λΉ μ°μ°μ, typeof ... |
08μ₯ μ μ΄λ¬Έ
μ μ΄λ¬Έμ 쑰건μ λ°λΌ μ½λ λΈλμ μ€ννκ±°λ λ°λ³΅ μ€νν λ μ¬μ©νλ€.
λΈλ‘λ¬Έ
λΈλ‘λ¬Έμ 0κ° μ΄μμ λ¬Έμ μ€κ΄νΈλ‘ λ¬Άμ κ²μΌλ‘, μ½λ λΈλ‘ λλ λΈλ‘μ΄λΌ λΆλ₯Έλ€. μΌλ°μ μΌλ‘ μ μ΄λ¬Έμ΄λ ν¨μλ₯Ό μ μν λ μ¬μ©νλ κ²μ΄ μΌλ°μ μ΄λ€.
λΆλ‘λ¬Έμ μΈμ λ λ¬Έμ μ’ λ£λ₯Ό μλ―Ένλ μ체 μ’ κ²°μ±μ κ°κΈ° λλ¬Έμ λΈλ‘λ¬Έμ λμλ μΈλ―Έμ½λ‘ μ λΆμ΄μ§ μλλ€λ κ²μ μ£Όμνμ.
쑰건문
쑰건문μ μ£Όμ΄μ§ 쑰건μμ νκ° κ²°κ³Όμ λ°λΌ μ½λ λΈλ‘μ μ€ν μ¬λΆλ₯Ό κ²°μ νλ€.
- if ... else λ¬Έ
: λ Όλ¦¬μ μ°Έ, κ±°μ§μΌλ‘ μ€νν μ½λ λΈλ‘μ κ²°μ νλ€.
: if ... else λ¬Έμ 쑰건μμ΄ λΆλ¦¬μΈ κ°μ΄ μλ κ°μΌλ‘ νκ°λλ©΄ μ묡μ μΌλ‘ λΆλ¦¬μΈ κ°μΌλ‘ λ³κ²½λμ΄ νκ°λλ€.
: λ§μ½ μ½λ λΈλ‘ λ΄μ λ¬Έμ΄ νλ λΏμ΄λΌλ©΄ μ€κ΄νΈλ₯Ό μλ΅ν μμλ€.
: λλΆλΆμ if ... else λ¬Έμ μΌν 쑰건 μ°μ°μλ‘ λ°κΏ μΈ μ μλ€.
if (쑰건μ1) {
// 쑰건μ1μ΄ μ°Έμ΄λ©΄ μ€ν
} if else (쑰건μ2) {
// 쑰건μ2κ° μ°Έμ΄λ©΄ μ€ν (μ΅μ
)
}else {
// 쑰건μ1, 2κ° λͺ¨λ κ±°μ§μ΄λ©΄ μ€ν (μ΅μ
)
}
- switch λ¬Έ
: λ Όλ¦¬μ μ°Έ, κ±°μ§λ³΄λ€λ λ€μν μν©(case)μ λ°λΌ μ€νν μ½λ λΈλ‘μ κ²°μ νλ€.
: caseλ¬Έμ ν΄λΉνλ λ§μ§λ§ λ¬Έμ breakλ¬Έμ μ¬μ©νμ§ μμΌλ©΄ λ€μ caseμ λ¬ΈμΌλ‘ μ°μ΄μ΄ μ΄λνλ κ²μ ν΄μ€λ£¨λΌ νλ€. ν΄μ€λ£¨λ₯Ό μ΄μ©ν΄ μ¬λ¬κ°μ caseλ¬Έμ νλμ 쑰건μΌλ‘ μ¬μ©ν μλ μλ€.
switch (ννμ) {
case ννμ1:
ννμκ³Ό ννμ1μ΄ μΌμΉνλ©΄ μ€νν λ¬Έ;
break; // μ½λ λΈλ‘μμ νμΆνλ μν
case ννμ2:
ννμκ³Ό ννμ2κ° μΌμΉνλ©΄ μ€νν λ¬Έ;
break;
default:
ννμκ³Ό μΌμΉνλ caseλ¬Έμ΄ μμ λ μ€νν λ¬Έ;
}
switch (ννμ) {
case ννμ1: case ννμ2: case ννμ3:
μ€νν λ¬Έ
break;
case ννμ4: case ννμ5: case ννμ6:
μ€νν λ¬Έ
break;
default:
μ€νν λ¬Έ
}
λ°λ³΅λ¬Έ
λ°λ³΅λ¬Έμ 쑰건μμ νκ° κ²°κ³Όκ° μ°ΈμΌ κ²½μ° μ½λ λΈλ‘μ μ€ννλ€. κ·Έ ν 쑰건μμ λ€μ νκ°νμ¬ μ¬μ ν μ°ΈμΈ κ²½μ° μ½λ λΈλ‘μ λ€μ μ€ννλ€. μ΄λ 쑰건μμ΄ κ±°μ§μΌ λκΉμ§ λ°λ³΅λλ€.
- for λ¬Έ
: for λ¬Έμ 쑰건μμ΄ κ±°μ§μΌλ‘ νκ°λ λκΉμ§ μ½λ λΈλ‘μ λ°λ³΅ μ€ννλ€.
: for λ¬Έμ λ³μ μ μΈλ¬Έ, 쑰건μ, μ¦κ°μμ λͺ¨λ μ΅μ μ΄λ€. μ΄λ€ μλ μ μΈνμ§ μμΌλ©΄ 무ν루νκ° λλ€.
: for λ¬Έ λ΄μ for λ¬Έμ μ€μ²©ν΄μ μ¬μ©ν μ μμΌλ©° μ΄λ₯Ό μ€μ²© for λ¬Έμ΄λΌ νλ€.
for (λ³μ μ μΈλ¬Έ λλ ν λΉλ¬Έ; 쑰건μ; μ¦κ°μ) {
μ‘°κ±΄λ¬Έμ΄ μ°ΈμΈ κ²½μ° λ°λ³΅ μ€νλ λ¬Έ;
}
for (var i = 0; i < 2; i++) {
console.log(i);
}
/*
1. forλ¬Έμ μ€ννλ©΄ μ μΌ λ¨Όμ var i = 0; μ΄ μ€νλλ€. λ³μ μ μΈλ¬Έμ λ¨ ν λ²λ§ μ€νλλ€.
2. λ³μ μ μΈλ¬Έμ μ€νμ΄ μ’
λ£λλ©΄ 쑰건μμ΄ μ€νλλ€.
3. 쑰건μμ νκ° κ²°κ³Όκ° trueλ©΄ μ½λ λΈλ‘μ΄ μ€νλλ€.
4. μ½λ λΈλ‘ μ€νμ΄ μ’
λ£λλ©΄ μ¦κ°μμ΄ μ€νλλ€.
5. μ¦κ°μ μ€νμ΄ μ’
λ£λλ©΄ 쑰건μμ΄ μ€νλλ€. (쑰건μμ νκ° κ²°κ³Όκ° falseμΌ λκΉμ§ λ°λ³΅νλ€.)
*/
// 무ν 루ν
for (;;) {
...
}
- while λ¬Έ
: μ£Όμ΄μ§ 쑰건μμ νκ° κ²°κ³Όκ° μ°Έμ΄λ©΄ κ³μ ν΄μ μ½λ λΈλ‘μ λ°λ³΅ μ€ννλ€. for λ¬Έμ λ°λ³΅ νμκ° λͺ νν λ μ£Όλ‘ μ°κ³ , while λ¬Έμ λ°λ³΅ νμκ° λΆλͺ νν λ μ£Όλ‘ μ¬μ©νλ€.
: 쑰건μμ νκ° κ²°κ³Όκ° μΈμ λ μ°Έμ΄λ©΄ 무ν 루νλλ€. 무ν 루νλ₯Ό νμΆνκΈ° μν΄μλ breakλ¬ΈμΌλ‘ μ½λ λΈλ‘μ νμΆνλ€.
var count = 0;
// 무ν 루ν
while (true) {
count++;
if (count === 3) break;
}
- do ... while λ¬Έ
: do ... while λ¬Έμ μ½λ λΆλ‘μ λ¨Όμ μ€ννκ³ μ‘°κ±΄μμ νκ°νλ€. λ°λΌμ μ½λ λΆλ‘μ 무쑰건 ν λ² μ΄μ μ€νλλ€.
var count = 0;
do {
count++;
} while (count < 3);
- break λ¬Έ
: break λ¬Έμ λ μ΄λΈ λ¬Έ, λ°λ³΅λ¬Έμ μ½λ λΈλ‘μ νμΆνλ€.
: μ°Έκ³ λ‘ λ μ΄λΈ λ¬Έμ μλ³μκ° λΆμ λ¬Έμ λ§νλ€.
: μ€μ²©λ for λ¬Έμ μΈλΆ for λ¬Έμ νμΆ ν λ λ μ΄λΈ λ¬Έμ μ¬μ©νλ€.
// foo λΌλ μλ³μκ° λΆμ λ μ΄λΈ λ¬Έ
foo : {
break foo; // foo λ μ΄λΈ μ½λ λΈλ‘μ νμΆ
}
// outer λΌλ μλ³μκ° λΆμ λ μ΄λΈ for λ¬Έ
outer : for () {
for () {
break outer; // outer λΌλ μλ³μκ° λΆμ for λ¬Έμ νμΆ
}
}
- continue λ¬Έ
: continue λ¬Έμ λ°λ³΅λ¬Έμ μ½λ λΈλ‘ μ€νμ ν μμ μμ μ€λ¨νκ³ λ°λ³΅λ¬Έμ 쑰건μμΌλ‘ μ€ν νλ¦μ μ΄λμν¨λ€. break λ¬Έμ²λΌ λ°λ³΅λ¬Έμ νμΆνμ§λ μλλ€.
var count = 0;
var string = 'Hello world';
// continue λ¬Έμ μ¬μ©νμ§ μμΌλ©΄ if λ¬Έ λ΄μ μ½λλ₯Ό μμ±ν΄μΌ νλ€.
for (var i = 0; i < string.length; i++) {
if (string[i] === 'l') {
count++;
}
}
// continue λ¬Έμ μ¬μ©νλ©΄ if λ¬Έ λ°κΉ₯μ μ½λλ₯Ό μμ±ν μ μλ€.
for (var i = 0; i < string.length; i++) {
if (string[i] !== 'l') continue;
count++;
}
09μ₯ νμ λ³νκ³Ό λ¨μΆ νκ°
νμ λ³νμ΄λ?
κ°λ°μκ° μλμ μΌλ‘ νμ μ λ³ννλ κ²μ λͺ μμ νμ λ³ν(explicit coercion) λλ νμ μΊμ€ν (type casting)μ΄λΌ νλ€.
κ°λ°μμ μλμλ μκ΄μμ΄ νκ°μμ νκ°νλ λμ€μ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ μ묡μ μΌλ‘ νμ μ΄ μλ λ³νλκΈ°λ νλ€. μ΄λ₯Ό μ묡μ νμ λ³ν(implicit coercion) λλ νμ κ°μ λ³ν(type coercion)μ΄λΌ νλ€.
μ묡μ νμ λ³νμ κΈ°μ‘΄ λ³μ κ°μ μ¬ν λΉνμ¬ λ³κ²½νλ κ²μ΄ μλλ€. λ°μμ€ν¬λ¦½νΈ μμ§μ ννμμ μλ¬ μμ΄ νκ°νκΈ° μν΄ νΌμ°μ°μμ κ°μ μ묡μ μΌλ‘ νμ λ³νν΄ μλ‘μ΄ νμ μ κ°μ λ§λ€μ΄ λ¨ ν λ² μ¬μ©νκ³ λ²λ¦°λ€.
μ묡μ νμ λ³ν
- λ¬Έμμ΄ νμ μΌλ‘ λ³ν
1 + '2' // '12'
`1 + 1 = ${1 + 1}` // '1 + 1 = 2'
0 + '' // '0'
NaN + '' // 'NaN'
true + '' // 'true'
null + '' // 'null'
(Symbol()) + '' // TypeError: Cannot Convert a Symbol value to a string
({}) + '' // '[object Object]'
[] + '' // ''
[10, 20] + '' // '10,20'
(function(){}) + '' // 'function(){}'
Array + '' // 'function Array() { {native code} }'
- μ«μ νμ μΌλ‘ λ³ν
1 - '1' // 0
1 * '10' // 10
'1' > 0 // true
+'' // 0
+'1' // 1
+'string' // NaN
+true // 1
+false // 0
+null // 0
+undefined // NaN
+Symbol() // TypeError: Cannot convert a Symbol value to a number
+{} // NaN
+[] // 0
+[10, 20] // NaN
- λΆλ¦¬μΈ νμ
μΌλ‘ λ³ν : μ μ΄λ¬Έμ 쑰건μκ³Ό κ°μ΄ λΆλ¦¬μΈ κ°μΌλ‘ νκ°λμ΄μΌ ν λ¬Έλ§₯μμ μ°ΈμΌλ‘ νκ°λλ κ°μ trueλ‘ κ±°μ§μΌλ‘ νκ°λλ κ°μ falseλ‘ μ묡μ νμ
λ³νλλ€.
(κ±°μ§μΌλ‘ νκ° λλ κ°: false, undefined, nill, 0, -0, NaN, λΉ λ¬Έμμ΄'')
if (!false) console.log('1'); // 1
if (!undefined) console.log('1'); // 1
if (!null) console.log('1'); // 1
if (!0) console.log('1'); // 1
if (!NaN) console.log('1'); // 1
if (!'') console.log('1'); // 1
λͺ μμ νμ λ³ν
- λ¬Έμμ΄ νμ μΌλ‘ λ³ν
// String μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
String(1); // '1'
String(true); // 'true'
// Object.prototype.toString λ©μλλ₯Ό μ¬μ©νλ λ°©λ²
(1).toString(); // '1'
(true).toString(); // 'true'
// λ¬Έμμ΄ μ°κ²° μ°μ°μλ₯Ό μ΄μ©νλ λ°©λ²
1 + ''; // '1'
true + ''; // 'true'
- μ«μ νμ μΌλ‘ λ³ν
// Number μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
Number('0') // 0
Number(true) // 1
// ParseInt, ParseFloat ν¨μλ₯Ό μ¬μ©νλ λ°©λ² (λ¬Έμμ΄λ§ λ³ν κ°λ₯)
parseInt('0') // 0
// + λ¨ν μ°μ μ°μ°μλ₯Ό μ΄μ©νλ λ°©λ²
+'0' // 0
+true // 1
// * μ°μ μ°μ°μλ₯Ό μ΄μ©νλ λ°©λ²
'0' * 1; // 0
true * 1 // 1
- λΆλ¦¬μΈ νμ μΌλ‘ λ³ν
// Boolean μμ±μ ν¨μλ₯Ό new μ°μ°μ μμ΄ νΈμΆνλ λ°©λ²
Boolean('x'); // true
Boolean(''); // false
Boolean(NaN); // false
Boolean(Infinity); // true
Boolean(0); // false
Boolean({}); // true
Boolean([]); // true
// ! λΆμ λ
Όλ¦¬ μ°μ°μλ₯Ό λ λ² μ¬μ©νλ λ°©λ²
!!1; // true
!!null; // false
!!nudefinded // false
λ¨μΆ νκ°
- λ
Όλ¦¬ μ°μ°μλ₯Ό μ¬μ©ν λ¨μΆ νκ°
: λ Όλ¦¬κ³±(&&) μ°μ°μμ λ Όλ¦¬ν©(||) μ°μ°μλ μ°μ°μ κ²°κ³Όλ₯Ό κ²°μ νλ νΌμ°μ°μλ₯Ό νμ λ³ννμ§ μκ³ κ·Έλλ‘ λ°ννλ€. μ΄λ₯Ό λ¨μΆ νκ°λΌ νλ€. λ¨μΆ νκ°λ ννμμ νννλ λμ€μ νκ° κ²°κ³Όκ° νμ λ κ²½μ° λλ¨Έμ§ νκ° κ³Όμ μ μλ΅νλ κ²μ λ§νλ€. λ¨μΆ νκ°λ₯Ό μ¬μ©νλ©΄ ifλ¬Έμ λ체ν μ μλ€.
λ¨μΆ νκ° ννμ | νκ° κ²°κ³Ό |
true || anything | true |
false || anything | anything |
true && anything | anything |
false && anything | false |
- λ¨μΆ νκ°κ° μ μ©ν μν©
// κ°μ²΄λ₯Ό κ°λ¦¬ν€κΈ°λ₯Ό κΈ°λνλ λ³μκ° null λλ undefinedκ° μλμ§ νμΈνκ³ νλ‘νΌν°λ₯Ό μ°Έμ‘°ν λ
var elem = null;
var value = elem && elem.value; // null
// ν¨μ 맀κ°λ³μμ κΈ°λ³Έκ°μ μ€μ ν λ
function getStringLength(str) {
str = str || '';
return str.length;
}
getStringLength(); // 0
getStringLength('hi'); // 2
- μ΅μ
λ 체μ΄λ μ°μ°μ
: ES11μμ λμ λ μ΅μ λ 체μ΄λ μ°μ°μ ?.λ μ’νμ νΌμ°μ°μκ° null λλ undefinedμΈ κ²½μ° undefinedλ₯Ό λ°ννκ³ , κ·Έλ μ§ μμΌλ©΄ μ°νμ νλ‘νΌν° μ°Έμ‘°λ₯Ό μ΄μ΄κ°λ€. μ΅μ λ 체μ΄λ μ°μ°μλ μ’ν νΌμ°μ°μκ° falseλ‘ νκ°λλ κ°μ΄λΌλ null λλ undefinedκ° μλλ©΄ μ°νμ νλ‘νΌν° μ°Έμ‘°λ₯Ό μ΄μ΄κ°λ€.
var elem = null;
var velue = elem?.value;
console.log(value); // undefined
- null λ³ν© μ°μ°μ
: ES11μμ λμ λ null λ³ν© μ°μ°μ ??λ μ’νμ νΌμ°μ°μκ° null λλ undefinedμΈ κ²½μ° μ°νμ νΌμ°μ°μλ₯Ό λ°ννκ³ , κ·Έλ μ§ μμΌλ©΄ μ’νμ νΌμ°μ°μλ₯Ό λ°ννλ€. λ³μμ κΈ°λ³Έκ°μ μ€μ ν λ μ μ©νλ€. null λ³ν© μ°μ°μ μ’ν νΌμ°μ°μκ° falseλ‘ νκ°λλ κ°μ΄λΌλ null λλ undefinedκ° μλλ©΄ μ’νμ νΌμ°μ°μλ₯Ό κ·Έλλ λ°ννλ€.
var foo = null ?? 'default string';
console.log(foo); // 'default string'