Daehyunii's Dev-blog
삼항 조건 연산자 관련 원리가 궁금하다 본문
-삼항 조건 연산자
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)
<참조 : 모던 자바스크립트 Deep dive>
'❔ Question > JavaScript' 카테고리의 다른 글
var키워드로 선언한 전역 변수는 전역 객체의 프로퍼티가 된다 그렇다면 전역 변수는 결국 프로퍼티인가? (0) | 2022.07.24 |
---|---|
var vs let & const 키워드의 '초기화단계' 시점이 차이나는 이유가 궁금하다. (0) | 2022.07.23 |
재귀함수 작동 원리가 궁금하다 (0) | 2022.07.06 |
객체 리터럴 프로퍼티 관련 내용이 궁금하다 (0) | 2022.07.02 |
단항 산술 연산자 관련 원리가 궁금하다 (0) | 2022.06.28 |