(TIL) NULL 병합 연산자와 AND, OR 연산자

성종호·2022년 3월 12일
1
post-custom-banner

면접 질문으로 받다.

이번 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한 값과 Falsy한 값

  • Truthy
    1. true
    2. 0, -0 이 아닌 숫자
    3. {} (빈 객체, 빈 딕셔너리)
    4. [] (빈 배열)
  • Falsy
    1. undefined
    2. null
    3. NaN
    4. 0
    5. -0
    6. “” (빈 문자열)
    7. false

AND 연산자

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 연산자

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 병합 연산자는 비교하는 값중 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 [스터디메이크]

profile
아자
post-custom-banner

0개의 댓글