javascript 연산자와 형변환

1. 산술연산자(Arithmetic Operators)

Operator Description
+ 덧셈
- 뺄셈
* 곱셈
/ 나눗셈
% 나머지
++ 증가
감소

+ 연산자

  • 연산 대상이 모두 숫자인 경우 : 덧셈 연산
  • 문자나 문자열이 포함된 경우 : 문자열 연결 연산
    [참고] 연산 대상을 같은 타입으로 맞춰서 덧셈 연산자를 수행하도록 하는 것이 좋다.

++, – (증감 연산자)

1
2
3
4
z = x++;    // 5 선대입후증가
z = ++x; // 7 선증가후대입
z = x--; // 7 선대입후감소
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
2
3
4
var o1 =  true || true;     // t || t returns true
var o2 = false || true; // f || t returns true
var o3 = true || false; // t || f returns true
var o4 = false || (3 == 4); // f || f returns false

&& (논리곱) 연산자

1
2
3
4
5
6
7
8
9
var a1 =  true && true;     // t && t returns true
var a2 = true && false; // t && f returns false
var a3 = false && true; // f && t returns false
var a4 = false && (3 == 4); // f && f returns false

// ! (논리 부정) 연산자
var n1 = !true; // false
var n2 = !false; // true
var n3 = !'Cat'; // false (빈 문자열이 아닐 경우 true로 간주)

[참고] 논리 부정 연산자로 값의 유무를 판별할 수 있다

1
2
var str='';
console.log(!str); // true - 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
2
3
4
console.log('1' > 0)  // true
console.log(1 + '2') // '12'
console.log(2 - '1') // 1
console.log('10' == 10) //true

직접 형 변환

string -> number

1
2
3
4
5
6
7
8
9
10
11
12
13
var val = '123'; //문자열

방법1)
val =+ val

방법2)
val = val * 1

방법3)
Number(value); //객체를 만들때 사용, 사용권장안함

방법4)
parseInt(value);

number -> string

1
2
3
4
5
6
7
8
9
10
var val = 123; //숫자

방법1)
val = val + ''; //권장

방법2)
val = String(val);

방법3)
val = val.toString();

Truthy & Falsy values

  • Falsy values : Boolean Context에서 false로 평가되는 값들
  • Truthy Values : Falsy values 이외의 값들이며(object포함) true로 평가된다.

Falsy Values

  • false
  • undefined
  • null
  • 0
  • NaN (Not a Number)
  • '' (빈문자열)