Daehyunii's Dev-blog

삼항 조건 연산자 관련 원리가 궁금하다 본문

❔ Question/JavaScript

삼항 조건 연산자 관련 원리가 궁금하다

Daehyunii 2022. 6. 28. 14:03

-삼항 조건 연산자

var x = 조건식(불리언 값으로 평가되는 표현식) ? true로 평가될 때 반환할 값 : false로 평가될 때 반환할 값

이때,  조건식이 불리언 값으로 평가되지 않으면 암묵적 타입 변환을 하게 되는데, 1이상의 숫자는 true로, 0은 false로 변환된다.

또한 null, undefined도 false로 타입 강제 변환이 일어나는데, 그 로직이 궁금하다.

1) null은 숫자로 형변환 하면 0이 되는데, 그렇다면 null > 0 > false로 가는것인지?

2) undefined은 숫자로 암묵적 타입 변환 하면 NaN이 되는데, 어떻게 false값으로 변환되는지? 

 

답 : 삼항 조건 연산자에서 암묵적 타입 변환은 조건식이 불리언 값으로 평가되어야 하기 때문에 이뤄지는 것이다. 즉 불리언 값이 아닌 값이 조건식으로 들어가면 불리언 값으로 타입 변환이 일어나는 것이다. 즉 숫자 값으로 암묵적 타입 변환이 일어나는 것과 불리언 값으로 암묵적 타입 변환이 일어나는 것은 별개의 일이다. 위의 1) 처럼 null > 0 > false 순으로 바뀌는 것이 아니라, null 값을 불리언 값으로 타입 변환하게 되면 false 값이 생성되는 것이고, null 값을 숫자 값으로 타입 변환하면 숫자 값 0이 생성되는 것이다. 

 

※참고(9.2.2 숫자 타입으로 변환, 9.2.3 불리언 타입으로 변환)

2022.06.28 - [2022 Today I Learned/June. TIL] - [28일-화요일] 모던 자바스크립트 Deep Dive(7)

 

[28일-화요일] 모던 자바스크립트 Deep Dive(7)

09장 타입 변환과 단축 평가 9.1 타입 변환이란? 자바스크립트의 모든 값은 타입이 있다. 값의 타입은 개발자의 의도에 따라 다른 타입으로 변환할 수 있다. 개발자가 의도적으로 값의 타입을 변

pinetree93.tistory.com

 

<참조 : 모던 자바스크립트 Deep dive>