개발자의 의도에 맞게 타입을 변환한 것
개바랒의 의도와 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해서 타입이 변환되는 것
const x = 10;
x.toString(); // "10" 명시적타입변환
String(x); // "10" 명시적타입변환
x + ""; // "10" 묵시적타입변환
자바스크립트에서는 아래의 6가지 값을 제외한 모든 값은 truthy로 평가된다.
false
undefined
null
0
, -0
NaN
""
표현식을 평가하는 도중에 평가결과가 확정되면 나머지 평가를 생략하는 것을 의미
||
과 &&
는 피연산자중 하나로 평가된다.
"a" || "b"; // "a" ..."a"만 평가하고 truthy이므로 "a"반환후 종료됨
"a" && "b"; // "b" ..."a"와 "b"모두 평가하고 "b"반환
좌항피연산자가 null
이나 undefined
라면 그대로 반환 아니면 우항의 프로퍼티참조를 이어가는 연산자
const person1 = { name: "john" };
const person2 = null;
person1?.name; // "john"
person2?.name; // null
person2.name; // error발생
person1 && person1.name; // "john"
좌항피연산자가 null
이나 undefined
라면 우항을 반환하고 아니면 좌항반환
falsy중에서도 null
과 undefined
일 경우에만 사용해야할 때 사용
"" || "default text"; // "default text"
"" ?? "default text"; // ""
null ?? "default text"; // "default text"
[]
), 빈객체 ({}
)는 truthy10 + ""; // "10"
+"10"; // 10
&&
는 제일 처음 falsy인 피연산자 반환하고, 없으면 제일 마지막 피연산자 반환||
는 제일 처음 truthy인 피연산자 반환하고, 없으면 제일 마지막 피연산자 반환"a" && null && "c"; // null => 제일 처음 falsy인 값
// "c"는 평가되지 않음 ( 단축평가 )
"" || null || "a" || false; // "a" => 제일 처음 truthy인 값