공부혜옹

[JavaScript_modern deep dive] 단축평가 본문

공부합시다/JavaScript

[JavaScript_modern deep dive] 단축평가

Blair06 2022. 10. 3. 18:14

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); //''
반응형
Comments