홍비 2020. 4. 7. 02:24

1. + 연산자

+ 연산자는 다음과 같은 기능을 수행한다.

  • 더하기 연산
  • 문자열 연결 연산
var addNum = 1 + 2;
console.log(addNum); // 출력값: 3

var addString = 'test' + 'string';
console.log(addString); // 출력값 : teststring

var stringNum = 'test' + 2;
console.log(stringNum); // 출력값 : test2

var numString = 2 + 'test';
console.log(numString); // 출력값: 2test

위와 같이 두 연산자가 모두 숫자일 경우에만 더하기 연산이 수행되고, 나머지는 문자열 연결이 이루어진다.

2. typeof 연산자

앞서 배열에서 살펴봤듯이 typeof 연산자는 피연산자의 타입을 문자열 형태로 리턴해준다.

null과 배열은 object이며, 함수는 function으로 리턴된다.

기본 타입 숫자 'number'
기본 타입 문자열 'string'
기본 타입 불린값 'boolean'
기본 타입 null 'object'
기본 타입 undefined 'undefined'
참조 타입 객체 'object'
참조 타입 배열 'object'
참조 타입 함수 'function'

3. == 연산자와 === 연산자

== 와 === 연산자는 두 값이 동일한지 확인하는데 모두 사용된다. 하지만 차이는 있다.

일단 == 연산자(coercive equality; 추상 비교, 동등 비교)는 비교하려는 피연산자의 타입이 다를 경우에 타입 변환을 거친 다음 비교한다.

반면에 === 연산자(strict equality; 엄격 비교, 일치 비교)는 타입이 다를 경우에 타입을 변경하지 않고 비교한다.

만약 두 피연산자의 값이 동일하면 true를 반환하고, 동일하지 않다면 false를 반환한다.

console.log(1 == '1'); // true

console.log(1 === '1'); //false

== 연산자는 두 피연산자의 자료형이 같지 않은 경우에도 같게 변환 후, 엄격 비교를 수행해준다. 하지만 피연산자가 모두 객체라면, 두 피연산자가 메모리의 같은 객체를 바라보고 있는지 판별한다.

 

4. != 연산자와 !== 연산자

!=(부등) 연산자는 두 피연산자가 같지 않은 경우 참을 반환한다. 피연산자의 자료형이 일치하지 않는 경우, == 연산자와 마찬가지로 적절한 자료형으로의 변환을 시도한다. 피연산자가 모두 객체라면 내부 참조를 확인하고 각 메모리가 다른 객체를 바라보고 있는지 확인한다.

!==(불일치) 연산자는 두 연산자가 같지 않거나, 같은 자료형이 아닐 때 참을 반환한다.

console.log(1 != 2); //true
console.log(1 != '1'); // false
console.log(1 != true); // false

console.log(3 !== '3'); // true
console.log(4 !== 1); // true

5. !! 연산자

!!의 역할은 피연산자를 불린값으로 변환해준다.