연산자와 피연산자
연산자
- 하나 이상의 표현식을 대상으로 산술, 할당, 비교 등을 수행해 하나의 값을 만든다.
- 피연산자 : 연산의 대상
- 피연산자는 값으로 평가 될 수 있는 표현식 이여야 한다.
- 피연산자와 연산자의 조합으로 이뤄진 연산자 표현식도 값으로 평가 될 수 있는 표현식이다.
연산자의 종류
산술 연산자
문자열 연결 연산자
- 피연산자 중 하나이상이 문자열인 경우 문자열 연결 연산자로 동작하고, 그 이외의 경우에는 산술 연잔자로 동작한다.
- 암묵적 타입 변환, 또는 타입 강제 변환 이 일어난다.

할당 연산자
- 우항에 있는 피연산자의 평가 결과를 좌항에 있는 변수에 할당한다. 할당 연산자는 좌항의 변수에 값을 할당하므로 변수 값이 변하는 부수 효과가 있다.
- 할당문은 값으로 평가되는 표현식인 문으로서 할당된 값으로 평가된다.
let x
console.log(x=10)
let a,b,c
a=b=c=0
비교 연산자
- 좌항과 우항의 피연산자를 비교한 다음 그 결과를 불리언 값으로 반환한다.
- 동등 비교 연산자
- 느슨한 비교
- 좌항과 우항의 피연산자를 비교할 때 암묵적 타입 변환을 통해 타입을 일치시킨후 같은 값인지 비교한다.
- 일치 비교 연산자
- 엄격한 비교
- 좌항과 우항의 피연산자가 타입도 같고 값도 같은 경우에 한하여 true 를 반환한다.

- NaN
NaN 은 자신과 일치하지 않는 유일한 값이다. 따라서 숫자가 NaN인지 조사하려면 Number.isNaN을 사용한다.
삼항 조건 연산자
- 자바스크립트의 유일한 삼항 연산자, 부수효과는 없다.
- if … else 문과의 차이
- if … else 문은 표현식이 아닌 문이다. 따라서 if …else 문은 값처럼 사용할 수 없다.
- 삼항 조건 연산자 표현식은 값으로 평가 할 수 있는 표현식인 문이다.
논리 연산자
- 우항과 좌항의 피연산자를 논리 연산한다.
- 논리 부정 연산자는 언제나 불리언 값을 반환한다.
쉼표 연산자
- 피연산자를 평가하고 마지막 피연산자의 평가가 끝나면 마지막 피연산자의 평가 결과를 반환한다.
let x,y,z
x=1, y=2, z=3
typeof 연산자
- 피연산자의 데이터 타입을 문자열로 반환한다.

지수 연산자
- ES7에서 도입된 지수 연산자는 좌항의 피연산자를 밑으로, 우항의 피연산자를 지수로 거듭 제곱하여 숫자 값을 반환한다.

그 외의 연산자
- ?. ,?? ,delete ,new ,instanceof , in …
연산자의 부수 효과
- 대부분의 연산자는 다른 코드에 영향을 주지 않지만, 일부 연산자는 다른 코드에 영향을 주는 부수효과가 있다.
- 할당연산자 (=) , 증가/감소 연산자(++/—), delete 연산자 등이다.
연산자 우선순위
연산자의 우선순위
- 여러 개의 연산자로 이뤄진 문이 실행될 때 연산자가 실행되는 순서를 말한다

연산자 결합 순서
- 연산자의 어느쪽 부터 평가를 수행할 것이지를 나타내는 순서
