하나 이상의 표현식을 대상으로 산술,할당 등을 수행해서 하나의 값을 만ㄷ르어준다. 이때 연산 대상을 피연산자라고한다. -> 피연산자는 값으로 평가될 수 있는 표현식이어야한다.
NaN
을 반환한다.+
,-
,*
,/
,%
++
,--
,+
,-
++
, --
는 피연산자의 값을 변경하는 부수효과가 있다.let x = 1;
x++
console.log(x) // 2
x--
console.log(x) // 1
++
과 --
의 위치에는 의미가 있는데
++x
)x++
)숫자 타입이 아닌 피연산자에
+
단항 연산자를 사용하면 피연산자를 숫자 타입으로 변환하여 반환한다.let x = '1'; console.log(+x); // 1 x = true; console.log(+x); // 1 x = false; console.log(+x); // 0 x = 'hello' console.log(+x); // NaN console.log(x) // 'hello', 부수효과가 없다.
+
는 피연산 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작한다.=
,+=
,-=
,*=
,/=
,%=
==
,===
, !=
, !==
일치 비교에서 NaN은 자신과 일치하지 않는 유일한 값이다
NaN === NaN; // false
>
,<
,>=
,<=
const x = 2;
const result = x % 2 ? '홀수' : '짝수';
console.log(result); // 짝수
?
앞에 있는 첫번째 피연산자가 true로 평가되면 두번째 피연산자를 반환하고 false로 평가되면 세 번째 피연산자랄 반환한다.if...else
문과 비슷하지만 삼항연산자는 표현식이기때문에 값처럼 사용할 수 있다.||(OR)
, &&(AND)
, !(NOT)
!
)는 언제나 boolean 값을 반환한다. 암묵적 타입변환하여 반환한다.!0; // true
!'Hello'; // false
드모르간 법칙을 이용하면 좀 더 좋은 표현식으로 변환할 수 있다.
!(x || y) <-> (!x && !y) !(x && y) <-> (!x || !y)
let x,y,z;
x=1,y=2,z=3 // 3
()
로 피연산자를 감싸고 그 표현식을 가장 먼저 평가한다.
- null의 경우 "null"이 아닌 "object"를 반환하는데, 이는 자바스크립트 첫 번째 버전의 버그다. 그런데 기존코드에 영향을 줄 수 있기 때문에 아직까지 수정되지 못하고 있다.
- 선언한 적 없는 변수를 typeof로 연산해보면 error를 내지 않고 undefined를 반환한다.
3 ** 3 // 27
Math.pow(3,3) // 27
(-5) ** 2;
?.
??
delete
new
in
=
, ++
, --
, delete
연산자는 부수효과가 있다