할당 연산자
- 할당 연산자는 우항에 있는 것을 좌항에 담는다고 생각하면 됨
- 초기화를 하는 할당을 하는걸 권장함(선언과 할당 동시에 하는 습관을 들이자)
let x;
x = '';
const y = '';
const obj = {};
obj.prop1 = '';
obj.prop2 = {};
obj.prop3 = [];
obj.prop4 = function () {};
const arr = [];
arr[0] = 0;
arr[1] = 1;
삼항 연산자
- 3개의 피연산자를 취하고 일종의 조건 연산자라고 볼 수 있음(if문과 유사한 느낌으로)
const val = (조건) ? 참일때 : 거짓일때
let val2;
if (조건) {
val2 = 참일때;
} else {
val2 = 거짓일때;
}
- 삼항 연산자의 경우 중첩으로도 쓸 수 있음
- 그리고 조건의 경우 그 안에 값 & 식만 들어올 수 있음
const age = 20;
const isAdult = age >= 20 ? '성인' : '미성년자';
비교 연산자
- 이상, 초과, 이하, 미만만 기억해도 충분함
- 비교할 때는 두 항을 하는데 좌항에는 비교 대상 우항에는 비교할 값을 넣는것을 권장함(대상 < 비교할 값)
const age = 20;
if (age < 10) {
}
if (age > 10) {
}
if (age >= 10) {
}
if (age <= 10) {
}
typeof
- 값은 Primitive 원시 타입과 Reference 참조 타입이 있는데, 이에 대해서
typeof
를 통해서 타입을 구분하고 파악할 수 있음
- 피연산자를 typeof 뒤에 붙이면 이에 대한 타입을 반환함(변수에 담긴 값도 포함)
const str = 'string';
const func = function () {};
typeof str;
typeof 123;
typeof 1n;
typeof true;
typeof Symbol();
typeof undefined;
typeof func;
typeof [];
typeof {};
typeof null;
typeof new Boolean(true);
- null의 경우 'object'로 타입이 나오는데, 객체 타입의 경우 3비트 값임, 그래서 null일 경우 값에 판단을 3비트로 객체로 판단함
- 이는 JS의 초기 오류라고 볼 수 있음(설계 오류), 이미 너무 많은 곳에서 써서 이를 수정하지 않음
instanceof
- 객체의 instance인지 확인하는 함수, 이는 객체의 인스턴스가 어떤 생성자로 생성된 것인지 알 수 있는 함수임
{} instanceof Object
꼴로 쓰임
const obj = {};
const arr = [];
const func = function () {};
obj instanceof Object;
arr instanceof Array;
func instanceof Function;
undefined instanceof Object;
null instanceof Object;
- instanceof로 레퍼런스 객체를 비교하고 처리할 수 있음 하지만
Object
최상위 객체로 비교하면 다 true가 될 것임
- 왜냐면 다 Object의 하위 체인으로 묶여있기 때문에 그럼
기타 연산자
,
도 연산자라고 할 수 있음, 우측의 값을 반환하다고 할 수 있음(모두 평가후, 하지만 헷갈리기에 쓰지 않는 것 추천)
123, 'ABC', true
- void 연산자의 경우, 표현식을 평가하고 undefined를 반환하는 연산자임
- 함수의 경우에도 기본적으로 void 타입을 쓰고 반환값이 없는 함수를 쓰면 undefined를 반환하는 것임
void 1;
void 0;
void (10 + 10);
function voidFunction() {}
voidFunction();
- void는 표현식 결과를 버릴 때 사용함 JS에서 onClick 같은 것을 쓸 때 void를 넣어야 하는 경우가 있음
- 반환이 없는 클릭을 사용할 때 void를 주로 썼음 그래서 void 연산자를 많이 썼었음