산술 연산자
- 이항 산술 연산자
- 2개의 피연산자를 산술 연산하여 숫자 값을 만든다.
- 덧셈, 뺄셈, 나눗셈, 곱셈, 나머지 계산이 모두 이항 산술 연산자 이다.
- 부수효과(피연산자의 값이 바뀌는 경우)는 나타나지 않는다.
- 단항 산술 연산자
- 1개의 피연산자를 산술 연산하여 숫자 값을 만든다.
- ++ : 증가 (부수효과 O)
- -- : 감소 (부수효과 O)
- +. : 어떠한 효과도 없다 (부수효과 X)
- -. : 양수를 음수로, 음수를 양수로 값을 반환한다 (부수효과 X)
피연산자 앞에 위치한 증가/감소 연산자는 먼저 피연산자의 값을 증가/감소 시킨 후 다른 연산
피연산자 뒤에 위치한 증가/감소 연산자는 먼저 다른 연산을 수행 후 피연산자의 값을 증가/감소
+,- 단항연산자는 숫자 타입이 아닌 피연산자를 숫자타입으로 변환하여 반환한다
var x = true;
console.log(+x)
var x = "1";
console.log(-x)
var x = "Hello";
console.log(+x)
- 문자열 연결 연산자
- +연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작한다.
'1' + 2;
1 + true;
자바스크립트 엔진에 의해 암묵적으로 타입이 자동변화되기도 한다
이를 암묵적 타입 변환, 타입 강제 변환이라고 한다
할당 연산자
- 우항에 있는 피연산자의 평가 결과를 좌항에 있는 변수에 할당한다.
- 종류: '=' '+=' '-=' '*=' '/='
- 모두 부수 효과가 있다
비교 연산자
- 동등/일치 비교 연산자
- 동등 비교 연산자(==, !=)
좌항과 우항의 피연산자를 비교할 때 먼저 암묵적 타입 변환을 통해 타입을 일치 시킨 후 비교
- 일치 비교 연산자(===, !==)
좌항과 우항의 피연산자가 타입도 같고 값도 일치한 경우에만 true를 반환한다
NaN === NaN; // false
Object.is(NaN, NaN); // true
Number.isNaN(NaN); // true
0 === -0; // true
Object.is(0, -0); // false
- 대소 관계 비교 연산자
- < > >= <= 을 이용하여 불리안 값 반환
삼항 조건 연산자
- 조건식 ? 조건식이 true일 때 반환값 : 조건식이 false일 때 반환값
- 가독성이 좋지만 if / else를 쓸 때에는 써야 좋음
논리 연산자
- || (논리합) &&(논리곱) ! (부정)
- 부수효과는 없다
! 연산자는 항상 불리안 값을 반환한다 = 암묵적 타입 변환을 통해서라도 반환
|| && 은 반환값이 불리안 값이 아닐 수도 있다
typeof 연산자
- 가장 중요한 것은 null의 type은 "object"로 나타난다
- 선언하지 않은 식별자를 typeof연산자로 연산하면 undefined 반환한다
var foo = null;
typeof foo === null;
typeof undeclared;
연산자의 부수효과
- 할당연산자, 증가/감소 연산자, delete 연산자 뿐이다