모던 자바스크립트 Deep Dive 9장을 읽고 정리한 글이다.
var x = 10;
//명시적 타입 변환
//숫자를 문자열로 타입 캐스팅한다.
var str = x.toString();
var x = 10;
//암묵적 타입 변환
//문자열 연결 연산자는 숫자 타입 x의 값을 바탕으로 새로운 문자열을 생성
var str = x + '';
1 + '2' // → "12"
`1 + 1 = ${1 + 1}` // → "1 + 1 = 2"
// 문자열 타입
+ "" // → 0
+'0' // → 0
+'1' // → 1
' s t r i n g ' // → NaN
// 불리언 타입
+ true // → 1
+ false // → 0
// null 타입
+ null // → 0
// undefined 타입
+ undefined // → NaN
// 심벌 타입
+ Symbol() // → TypeError: Cannot convert a Symbol value to anumber
// 객체 타입
+{} // → NaN
+[] 1 // → 0
+[10, 20] // → NaN
+ ( function(){} ) // → NaN
+
단항 산술 연산자를 이용*
산술 연산자를 이용 ||
)또는 논리곱(&&
)연산자 표현식은 언제나 2개의 피연산자 중 어느 한쪽으로 평가됨 'Cat' && 'Dog' // → "Dog"
'Cat' && 'Dog' // → "Cat"
논리합(
||
)또는 논리곱(&&
)연산자는 논리 연산의 결과를 결정하는 피연산자를 타입 변환하지 않고 그대로 반환
단축 평가를 사용하면 if문을 대체할 수 있음
어떤 조건이 Truthy 값일 때 무언가를 해야한다면 논리곱 연산자 표현식으로 대체 가능
var done = true;
var message = "";
//주어진 조건이 true일 때
if(done) message = '완료';
//단축 평가: done이 true라면 message에 '완료'를 할당
message = done && '완료'
어떤 조건이 Falsy 값일 때 무언가를 해야한다면 논리합 연산자 표현식으로 대체 가능
var done = true;
var message = "";
//주어진 조건이 false일 때
if(!done) message = '완료';
//단축 평가: done이 false라면 message에 '완료'를 할당
message = done || '완료'
객체를 가리키기를 기대하는 변수가 null또는 undefined가 아닌지 확인하고 프로퍼티를 참조할 때 단축평가 활용
var elem = null
//elem이 null 이나 undefined와 같은 Falsy 값이면 elem 으로 평가되고
//elem이 Truthy 값이면 elem.value로 평가된다.
var value = elem && elem.value
// 단축 평가를 사용한 매개변수의 기본값 설정
function getStringLength(str) f
str = str || '';
return str.length;
getStringLength(); // 0
getStringLength('hi'); //2
// ES6 의 매개변수의 기본값 설정
function getStringLength(str = '') {
return str.length;
}
getStringLength(); // 0
getStringLength('hi'); //2
?.
는 좌항의 피연산자가 null또는 undefined인 경우 undefined를 반환하고, 그렇지 않으면 우항의 프로퍼티 참조를 이어나감 ??
는 좌항의 피연산자가 null 또는 undefined인 경우 우항의 피연산자를 반환하고, 그렇지 않으면 좌항의 피연산자를 반환