연산자 파트는 외우기보다는 연산자 우선순위나 연산자를 사용할 때의 주의사항들을 기억하면 좋을 것 같다.
1️⃣ 이항 산술 연산자 (부수 효과 x)
5 + 2 // 7
5 - 2 // 3
5 * 2 // 10
5 / 2 // 2.5
5 % 2 // 1
2️⃣ 단항 산술 연산자
| 단항 산술 연산자 | 의미 | 부수 효과 |
|---|---|---|
| ++ | 증가 | o |
| -- | 감소 | o |
| + | 어떠한 효과도 없다. 음수를 양수로 반전하지도 않는다. | x |
| - | 양수를 음수로 음수를 양수로 반전한 값을 반환한다. | x |
var x = 5, result;
// 선대입 후증가 (Postfix increment operator)
result = x++;
console.log(result, x); // 5 6
// 선증가 후대입 (Prefix increment operator)
result = ++x;
console.log(result, x); // 7 7
// 선대입 후감소 (Postfix decrement operator)
result = x--;
console.log(result, x); // 7 6
// 선감소 후대입 (Prefix decrement operator)
result = --x;
console.log(result, x); // 5 5
증가/감소 연산자는 피연산자의 값을 변경하는 암묵적 할당이 이루어진다.
⚠ 숫자 타입이 아닌 피연산자에 +단항 연산자를 사용하면 숫자 타입으로 변환하여 반환한다.
var x = '1';
//문자열을 숫자로 타입 변환한다.
console.log(+x); // 1
3️⃣ 문자열 연결 연산자
// 문자열 연결 연산자
'1' + '2' // '12'
'1' + 2 // '12'
//암묵적 타입 변환
1 + true // 2 (true → 1)
1 + false // 1 (false → 0)
true + false // 1 (true → 1 / false → 0)
1 + null // 1 (null → 0)
1 + undefined // NaN (undefined → NaN)
+연산자는 하나 이상이 문자열일 때, 문자열 연결 연산자로 동작한다.
문자열과 숫자가 더해지면 숫자 타입인 1이 암묵적 타입변환(타입 강제 변환)이 이루어지는 것이다.
할당 연산자를 사용하면 변수 값이 변하므로 부수 효과가 있다.
var x;
x = 10; // 10
x += 5; // 15
x -= 5; // 10
x *= 5; // 50
x /= 5; // 10
x %= 5; // 0
var str = 'My name is ';
str += 'Lee'; // My name is Lee
⚠ 할당문은 표현식인 문일까 표현식이 아닌 문일까?
표현식은 값으로 평가될 수 있는 문이라고 배웠다. 그래서 값을 할당해보면 표현식인 문인지 아닌지 알 수 있다고 했다.