js - 조건문
조건문 - True / False
js에서 조건문 사용시 주위 해야 할 점이 존재 한다.
javascript에는 아래 6개 데이터에 대해서 false 값으로 판단한다.
( 나머지는 다 ture라고 생각하면 된다 )
undefined
null
0
-0
NaN
"" // 빈 문자열
js에서 [] 는 (0)으로 출력된다 이때 해당 공 배열을 사용하여 조건문 사용시
console.log( [] ) // return (0)
consolo.log ( false == [] ) // return : ture
if( [] ) { console.log("true"); }
else { console.log("false"); } // return : true
위의 결과 값을 가지게 된다.
0은 false 값으로 판단 됨으로 false == [] 는 0 == 0 임으로 true가 맞다.
if( [] ) 는 if( 0 ) 이기 때문에 else 문이 실행되어야 하는데 왜 라고 생각할수 있다.
그러나 js의 if 문은 boolean type으로 판단하기때문에 ( ) 안의 argument의 타입변환이 일어나게 된다.
console.log( typeof [] ) // return object
이때 []의 타입을 확인해보면 Object 인것을 확인할 수 있고 그렇기 때문에 else문이 아닌 if 문의 body가 실행되는 것이다.
https://tc39.es/ecma262/#sec-toboolean
ECMAScript® 2022 Language Specification
The first and subsequent editions of ECMAScript have provided, for certain operators, implicit numeric conversions that could lose precision or truncate. These legacy implicit conversions are maintained for backward compatibility, but not provided for BigI
tc39.es