단항 연산자 : 피 연산자의 값을 바꿔 새 값을 얻음 (오른쪽 → 왼쪽으로 연산 이동, 높은 우선순위를 가짐)
<종류>
let i = 1; j = ++i; // i와 j는 모두 2
let n = 1, m = n++; // n은 2, m은 1
비트 연산자 : 숫자의 이진 표현의 비트를 대상으로 저수준 조작을 수행
숫자 피 연산자를 받고 숫자 값을 반환 하므로 산술 연산자로 분류
피 연산자에 정수 값을 예상하며, 이 값이 64비트 부동 소수점 값이 아닌 32비트 정수인 것처럼 동작
(원래 JS의 숫자 표현은 64비트 부동 소수점으로 이루어짐)
// 동등 연산자의 예시
null == undefined // true
0 == [] // true
"1" == true // true
"1" == 1 // true
// 일치 연산자의 예시
null === undefined // false
0 === [] // false
NaN === NaN // false
-0 === 0 // true
비교 연산자 : 피 연산자의 순서를 비교
비교 연산자는 피 연산자의 타입을 가리지 않음.
(but 숫자와 문자열에 대해서만 가능하여 숫자나 문자열의 형태로 반환)
두 피 연산자가 모두 문자열 이라면 알파벳 순서로 비교
ex) “3” < “5” → true
두 피 연산자가 하나라도 NaN이거나 NaN으로 반환시 false 반환
ex) “one” < “2” → false
ASCII 대문자는 모두 ASCII 소문자보다 낮은 우선순위
ex) “Zoo” < “aardwrk”
let point = {x:1, y:2};
"x" in point // true
"z" in point // false
"toString" in point // true : 객체는 toString 메서드를 상속
let data = [7,8,9];
"0" in data // true : data안에 0번째 인덱스 값이 존재하므로 true
1 in data // true
3 in data // false