1. 산술연산자(Arithmetic Operators)
| Operator | Description |
|---|---|
| + | 덧셈 |
| - | 뺄셈 |
| * | 곱셈 |
| / | 나눗셈 |
| % | 나머지 |
| ++ | 증가 |
| – | 감소 |
+ 연산자
- 연산 대상이 모두 숫자인 경우 : 덧셈 연산
- 문자나 문자열이 포함된 경우 : 문자열 연결 연산
[참고] 연산 대상을 같은 타입으로 맞춰서 덧셈 연산자를 수행하도록 하는 것이 좋다.
++, – (증감 연산자)
1 | z = x++; // 5 선대입후증가 |
2. 대입연산자(Assignment Operators)
| Operator | Example | Same As |
|---|---|---|
| = | x = y | x = y |
| += | x += y | x = x + y |
| -= | x -= y | x = x - y |
| *= | x *= y | x = x * y |
| /= | x /= y | x = x / y |
| %= | x %= y | x = x % y |
3. 비교연산자(Comparison Operators)
| Operator | Description |
|---|---|
| == | 동등비교 (loose equality) 형변환 후, 비교한다. |
| === | 일치비교 (strict equality) 타입까지 일치하여야 true를 반환한다. |
| != | 부등비교 |
| !== | 불일치비교 |
| > | 관계비교 |
| < | 관계비교 |
| >= | 관계비교 |
| <= | 관계비교 |
| ? | 삼항연산자 |
[참고] ==와 === 연산자 비교
var num = 5;
x == 5 // true
x == ‘5’ // true, 데이터형이 달라도 같게 변환하여 true를 반환한다.
x === 5 // true
x === ‘5’ // false, 데이터형이 다르면 false를 반환한다.
4. 논리 연산자(Logical Operator)
| Operator | Description | ||
|---|---|---|---|
| ` | ` | or | |
| && | and | ||
| ! | not |
|| (논리 합) 연산자
1 | var o1 = true || true; // t || t returns true |
&& (논리곱) 연산자
1 | var a1 = true && true; // t && t returns true |
[참고] 논리 부정 연산자로 값의 유무를 판별할 수 있다
1 | var str=''; |
5. 단축 평가(Short-Circuit Evaluations)
- Boolean값으로 평가하기 위해 참조하여야 할 곳까지 진행한 후, 평가를 중지하게된 계기가 된 값을 반환한다.
| 평가식 | 평가결과 | ||
|---|---|---|---|
| true ` | ` anyting | true | |
| false ` | ` anything | false | |
true && anything |
anyting | ||
false && anything |
false |
1 | var foo = 'Cat' && 'Dog' // t && t returns 'Dog' |
- ‘Cat’은 true이므로 ‘Dog’까지 평가해 보아야 한다.
- 평가를 중지하게된 계기가 된 값 ‘Dog’을 반환한다.
1 | var foo = 'Cat' || 'Dog' // t || t returns 'Cat' |
- ‘Cat’은 true이므로 평가를 중지하고 ‘Cat’을 반환한다.
평가
흐름제어를 위해서는 조건식을 평가하여 논리적 참, 거짓을 구별한 후 평가 결과에 따라 의사결정을 하는 것이 일반적이다.
이 때 자바스크립트는 암묵적 강제 형 변환을 통해 조건식을 평가한다.
암묵적 강제 형 변환 (Type coercion)
Javascript는 context(문맥)을 고려하여 내부적으로 자료형을 암묵적으로 강제 변환하여 작업을 완료할 수 있다.
1 | console.log('1' > 0) // true |
직접 형 변환
string -> number
1 | var val = '123'; //문자열 |
number -> string
1 | var val = 123; //숫자 |
Truthy & Falsy values
Falsy values: Boolean Context에서 false로 평가되는 값들Truthy Values: Falsy values 이외의 값들이며(object포함) true로 평가된다.
Falsy Values
falseundefinednull0NaN (Not a Number)'' (빈문자열)