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
false
undefined
null
0
NaN (Not a Number)
'' (빈문자열)