||
, &&
, !
논리 연산자
는 피연산자로 불린형뿐만 아니라 모든 타입의 값을 받을 수 있습니다. 연산 결과 역시 모든 타입이 될 수 있습니다.
!
> &&
> ||
if
를 ||
나 &&
로 대체하지 마라.&&
를 사용한 코드가 더 짧긴 하지만 if
문을 사용한 예시가 코드에서 무엇을 구현하고자 하는지 더 명백히 드러내고, 가독성도 좋습니다. 피연산자가 모두
false
인 경우를 제외하고 연산 결과는 항상true
입니다.
OR 연산자 ||
은 주어진 조건 중 하나라도 참인지를 테스트하는 용도로if
문에서 자주 사용됩니다.alert( true || true ); // true alert( false || true ); // true alert( false || false ); // false
피연산자가 불린형이 아니면, 평가를 위해 불린형으로 변환됩니다.
변수 또는 표현식으로 구성된 목록에서 첫 번째
truthy
얻기
OR (||) 연산자
를 여러 개 체이닝(chaining) 하면 첫 번째truthy
를 반환합니다. 피연산자에truthy
가 하나도 없다면 마지막 피연산자를 반환합니다. 이때 반환 값은 형 변환을 하지 않은 원래 값입니다.단락 평가
OR (||)
은 왼쪽부터 시작해서 오른쪽으로 평가를 진행하는데,truthy
를 만나면 나머지 값들은 건드리지 않은 채 평가를 멈춥니다. 이런 프로세스를 '단락 평가’라고 합니다.
단락 평가는 연산자 왼쪽 조건이falsy
일 때만 명령어를 실행하고자 할 때 자주 쓰입니다.
AND 연산자
는 두 피연산자가 모두가 참일 때true
를 반환합니다. 그 외의 경우는false
를 반환하죠.alert( true && true ); // true alert( false && true ); // false alert( false && false ); // false
AND 연산자
는 첫 번째falsy
를 반환합니다. 피연산자에falsy
가 없다면 마지막 값을 반환합니다.
- 피연산자를 불린형(
true
/false
)으로 변환합니다.- 1에서 변환된 값의 역을 반환합니다.
NOT
을 두 개 연달아 사용(!!
)하면 값을 불린형으로 변환할 수 있습니다. 내장 함수Boolean
을 사용하면!!
을 사용한 것과 같은 결과를 도출할 수 있습니다.
(!) 스펙에 추가된 지 얼마 안 된 문법입니다. 구식 브라우저는 폴리필이 필요합니다.
a
가 null
도 아니고 undefined
도 아니면 a
, 그 외의 경우는 b
null 병합 연산자 (??)
를 사용하면 피연산자 중 값이 할당된 변수를 빠르게 찾을 수 있습니다.
??
는 변수에 기본값을 할당하는 용도로 사용할 수 있습니다.
a ?? b
// null 병합 연산자(??) 없이 x = a ?? b와 동일한 동작을 하는 코드
x = (a !== null && a !== undefined) ? a : b;
||
는 첫 번째 truthy
값을 반환하지만 ??
는 첫 번째 정의된 값을 반환한다.
null
과 undefined
, 숫자 0
을 구분 지어 다뤄야 할 때 이 차이점은 매우 중요한 역할을 한다. 0
이 할당될 수 있는 변수를 사용해 기능을 개발할 땐 ||
보다 ??
가 적합하다.
0 ?? 100 // 0
0 || 100 // 100 (0을 falsy한 값으로 취급하는 ||)
??
의 연산자 우선순위는 대다수의 연산자보다 낮고?
와=
보다는 높습니다.
그렇기 때문에 복잡한 표현식 안에서??
를 사용해 값을 하나 선택할 땐 괄호를 추가하는 게 좋습니다.안정성 관련 이슈 때문에
??
는&&
나||
와 함께 사용하지 못합니다.
함께 사용하면 문법 에러가 발생합니다. 제약을 피하려면 괄호를 사용해주세요.
delete 연산자
는 피연산자인 객체, 객체의 프로퍼티(property) 또는 배열의 요소(element) 등을 삭제해 줍니다.
피연산자가 성공적으로 삭제되었을 때는참(true)
을 반환하고, 삭제하지 못했을 때는거짓(false)
을 반환합니다.
typeof 연산자
는 피연산자의 타입을 반환합니다.
instanceof
연산자는 피연산자인 객체가 특정 객체의 인스턴스인지 아닌지를 확인해 줍니다.
피연산자가 특정 객체의 인스턴스이면참(true)
을 반환하고, 특정 객체의 인스턴스가 아니면거짓(false)
을 반환합니다.
이 연산자는 두 개의 피연산자를 가지는 이항 연산자이며, 피연산자들의 결합 방향은 왼쪽에서 오른쪽입니다.
집을 지을 때 그 집을 짓기 위한 설계도 =
class
설계도를 보고 만든 집 =instance
설계도나 만들어진 집, 만든 사람 =객체
출처: 자바스크립트 인스턴스란? - Zzolab Project
void 연산자
는 피연산자로 어떤 타입의 값이 오던지 상관없이 언제나undefined
값만을 반환합니다.
instance
공부하기