Notice
Recent Posts
Recent Comments
Link
반응형
공부혜옹
[JavaScript_modern deep dive] 단축평가 본문
5. 단축평가
5-1) 단축평가는 표현식을 평가하는 도중에 평가결과가 확정되는 경우 나머지 평가 과정을 생략하는 것이다
//결과: 'Cat'
'Cat' || 'Dog' // Cat(true)에서 이미 결과가 확정이되어 'Dog'는 평가하지않는다
5-2) 단축평가는 if문을 대체할 수 있다
if(true) foo = '트루';
-> foo = true && '트루';
if(!true) foo = '폴스';
-> foo = !true || '폴스';
5-3) 단축평가 사용사례
5-3.1) 객체변수가 null인지 undefined인지 확인한 후 프로퍼티를 참조할때
//obj가 null 혹은 undefined이면 falsy값이므로 obj로 평가되고 값이 있을경우 onj.value로 평가된다
let obj = null;
let value = obj && obj.value; //null
5-3.2) 함수 매개변수에 기본값을 설정할때
function getString(str){
str = str||``;
} //undefined 예방
5-4) 옵셔널 체이닝 연산자
옵셔널 체이닝 연산자 ?. 는 좌항의 피연산자가 undefined, null인경우 undefined, null을 반환하고, 그렇지않으면 좌항의 피연산자가 falsy값일때도 우항 피연산자를 참조한다
let str = '';
let length1 = str && str.length; //str이 falsy값이기 때문에 좌항값인 str이 반환된다
let length2 = str?.length; //str이 falsy값임에도 우항의 length 프로퍼티를 참조한다
5-5) null 병합 연산자
null병합 연산자 ??은 좌항의 피연산자가 null 또는 undefined일 경우 우항 피연산자를 반환한다.
||연산자와 비슷하지만 좌항의 피연산자가 falsy값인경우 반환값이 다르다
기존 ||연산자는 좌측값이 falsy일 경우 우항피연산자를 반환한다. 이 경우 좌측값이 0, ‘’와 같은 값이라도 falsy이기 때문에 우항값이 반환되는데 기본값 범위에 0, ‘’이 허용된다면 예기치 않은 동작이 발생할 수 있다
let str = '' || 'no string';
console.log(str); //'no string'
let str2 = '' ?? 'no string';
console.log(str2); //''
반응형
'공부합시다 > JavaScript' 카테고리의 다른 글
[Javascript] 1e3 === 1000 ? (0) | 2022.11.08 |
---|---|
[Javascript] 알고리즘 reduce와 concat을 활용한 그래프관계 구현 (0) | 2022.11.03 |
[JavaScript_modern deep dive] 연산자 (0) | 2022.10.03 |
[JavaScript_modern deep dive] 스코프 (0) | 2022.10.03 |
[JavaScript_modern deep dive] 변수 (0) | 2022.10.03 |
Comments