자바스크립트 연산자
자바스크립트의 연산자에 대하여 알아보자.
산술연산자
a. 연산자
ㄱ. 덧셈
- 피연산자의 숫자 값을 더하거나 피연산자의 문자열을 이어 붙임
- 피연산자의 타입이 서로 다를 경우 toString() 메소드를 호출하여 더함
console.log('2' + 1);
console.log('1' + 2);
console.log('1' + {});
console.log(2 + null);
console.log(3 + undefined);
ㄴ. 나눗셈
- 자바스크립트의 모든 숫자는 부동소숫점 숫자로 취급됌
console.log(5/2);
b. 단항 연산자
ㄱ. 단항 덧셈(+)
- 피연산자를 숫자(or NaN)으로 바꾼 후 값을 반환한다. 만일 피연산자가 숫자일 경우 아무 일도 하지 않는다.
ㄴ. 단항 뺄셈(-)
- 피연산자를 숫자로 변환하려 시도하고 부호를 바꾼다.
ㄷ. 증가(++), 감소(--)
- 피연산자의 값 앞에 있을 경우 증가(감소)한 후의 값을 반환한다.
- 피연산자의 값 뒤에 있을 경우 현재 값을 반환한 후 증가(감소)한다.
ㄹ. 비트 연산자
2진수를 저수준에서 조작하는 데 사용한다. 사칙연산 과 같은 산술 연산을 수행하지는 않지만, 피연산자로 숫자 값을 사용하고 최종적으로 숫자값을 반환하기 때문에 자바스크립트에서는 산수 연산자로 분류되어있다. 많이 쓰지 않으니 종류만 알고 넘어가자.
- AND(&) : 불리언 AND연산을 수행한다.
- OR(|) : 불리언 OR연산을 수행한다.
- XOR(^) : 불리언 XOR 연산을 수행한다.
- NOT(~) : 모든 비트를 반전시킨다.
- << : 왼쪽으로 이동
- >> : 부호를 보존하면서 오른쪽으로 이동
- >>> : 0으로 채우면서 오른쪽으로 이동
c. 동치 연산자
ㄱ. ==
- 두 값 중 하나가 null이고 다른 하나가 undefined라면 일치한다.
- 두 값의 타입이 다를 경우 형변환을 한 후 비교한다.
- 하나의 객체가 있고 숫자,문자가 있다면 toString(), valueOf()를 호출한 후 비교한다
ㄴ. ===
- 두 값이 모두 null이거나 undefined면 일치한다.
- 적어도 하나의 값이 NaN이면 일치하지않는다. NaN은 isNaN()을 써야한다.
- 두 값이 문자열이며 정확히 같은위치에 16비트 값을 가지고 있다면 두 값은 일치한다. 육안상으로 같더라도 16비트 값의 순서가 다르게 인코딩되어 있다면 일치하지 않는다. (String.localCompare())
- 객체의 프로퍼티가 같더라도 주소값이 다르면 일치하지 않는다.
console.log(null === undefined);