
자바스크립트의 모든 값에는 타입이 존재하며 값의 타입은 개발자의 의도에 따라 다른 타입으로 변환할 수 있다.
여기서 개발자가 의도적으로 값의 타입을 변환하는 것을 명시적 타입 변환이라 하고, 개발자의 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되는 것을 암묵적 타입 변환이라 한다.
표준 빌트인 생성자 함수(
String,Number,Boolean)를 사용해 명시적으로 타입을 변환할 수 있다.
ex.
let num = 42;
let str = String(num); // "42"
let bool = Boolean(0); // false
let int = Number("42"); // 42
문자열과 숫자를
+로 더하면, 숫자가 문자열로 변환된다.
ex.
let result = '5' + 3 // "53"
-,*,/연산자는 문자열을 숫자로 변환하려 시도한다.
ex.
1 - '1' // 0
1 * '10' // 10
1 / 'one' // NaN
왼쪽 피연산자가 true로 평가되면, 전체 표현식은 더 이상 평가되지 않고 true로 결정된다. 이때 왼쪽 값이 그대로 반환된다.
ex.
let result = true || "Hello"; // true
let result2 = false || "Hello"; // "Hello"
왼쪽 피연산자가 false로 평가되면, 전체 표현식은 더 이상 평가되지 않고 false로 결정된다. 이때 왼쪽 값이 그대로 반환된다.
ex.
let result = false && "Hello"; // false
let result2 = true && "Hello"; // "Hello"
객체의 깊은 속성을 접근할 때 안전하게 값을 가져올 수 있는 방법.
null 또는 undefined일 때 에러를 발생시키지 않고 undefined를 반환한다.ex.
let user = { profile: { name: "Sean" } };
console.log(user.profile?.name); // "Sean"
console.log(user.address?.street); // undefined (에러 발생하지 않음)
null또는undefined일 경우 기본값을 설정할 수 있도록 해주는 연산자.
||와 유사하지만, false, 0, '' 같은 값들은 null로 간주하지 않는다.null이나 undefined에만 반응하기 때문에 0, false, '' 등을 유효한 값으로 인식할 수 있다. ex.
let userInput = null;
let defaultText = userInput ?? "Default Value"; // "Default Value"
let anotherInput = "";
let anotherText = anotherInput ?? "Another Default"; // ""