이번 TIL을 작성하는 가장 큰 이유인것 같다. 기본적인 것이고 기본적이라서 대답을 못해 나한테 크리티컬한 문제로 다가와서 이다.
일반적으로 개발을 할때
if(1+1==2 && 1+2==1) //둘 모두의 조건이 True일때
if(1+1==2 || 1+2==1) //둘중 한조건이라도 True일때
이런식으로 사용을 했었는데 면접때 간단한 기술면접을 봤었는데 질문이
1. 1 && 2 와 0 && 2 의 예상값 // 나는 True, Flase인줄 착각
2. NULL 병합 연산자와 AND연산자 차이 // NULL병합연산자를 처음 들어봄
둘다 제데로 답을 못적어 회고 겸 TIL작성을 해보려 한다.
- Truthy
- true
- 0, -0 이 아닌 숫자
- {} (빈 객체, 빈 딕셔너리)
- [] (빈 배열)
- Falsy
- undefined
- null
- NaN
- 0
- -0
- “” (빈 문자열)
- false
and연산자는 비교하는 값 둘 모두가 True일때 조건을 통과
console.log( 1+1==2 && 2+2==4 ) // True
console.log( 1+1==2 && 2+2==2 ) // False
이렇게 연산의 값을 비교하는건 많이 써봤지만 밑의 코드처럼 값만 비교를 할때는 어떤 걸 반환할지 몰랐다.
console.log( 1 && 0 ) // 0
console.log( 0 && 1 ) // 0
이렇게 달랑 값 and 값 인 경우에는 하나라도 Falsy한 값이 있으면 Falsy한 값을 반환한다.
둘다 True일 경우 두번째 True값이 반환된다.
둘다 False일 경우 첫번째 False값이 반환된다.
or연산자는 비교하는 값중 하나라도 True일 경우 조건 통과
console.log( 1+1==2 || 2+2==4 ) // True
console.log( 1+1==2 || 2+2==2 ) // True
console.log( 1+1==4 || 2+2==2 ) // False
값과 값만을 비교할때도 Truthy한 값이 있다면 Truthy한 값을 반환
console.log( 1 || 0 ) // 1
console.log( 0 || 1 ) // 1
and 연산자와는 반대로
둘다 True일 경우 첫번째 True값이 반환된다.
둘다 False일 경우 두번째 False값이 반환된다.
Null 병합 연산자는 비교하는 값중 Null값이 있다면 다른 값을 반환
console.log(null??0) // 0
console.log(null??undefined) // undefined
console.log(null??1) // 1
console.log(0??null) // 0
console.log(undefined??null) // null
console.log(1??null) // 1
console.log(0??1) //0
console.log(1??0) // 1
Null 과 Undefined 같은 레벨로 판단되고 둘다 Null로 계산되는듯 하다.
둘다 Null일 경우 첫번째 Null값이 반환된다.
둘다 Null이 아닐 경우 첫번째 값이 반환된다.
참고블로그: https://studymake.tistory.com/484 [스터디메이크]