코딩 일지

자바스크립트 기초를 제대로 알고 있나요? 본문

프론트엔드/자바스크립트

자바스크립트 기초를 제대로 알고 있나요?

realpeach 2023. 6. 14. 00:44

※ 자료형과 비교 연산에 관한 글

 

다음의 답을 생각해보기

console.log(null == undefined); // (1)
console.log(null === undefined); // (2)
console.log(null > 0); // (3)
console.log(null == 0); // (4)
console.log(null >= 0); // (5)
더보기

정답

 

(1) true

(2) false

(3) false

(4) false

(5) true

 

※ (1)과 (2)의 결과, 왜?

동등 연산자 == 를 사용하여 null과 undefined를 비교하면 true가 반환된다.

두 값은 서로끼리만 어울린다.

그러나 자료형이 달라서 일치 연산자 === 를 쓰면 false 가 리턴됨. 

 

※ (3), (4), (5)의 결과, 왜?

(5)가 참인데 (3)과 (4) 모두가 false인 것은 논리적으로 이상해보인다.
같은 것도 큰 것도 참이 아닌데 같거나 큰 것이 참이라니.
이 결과는 동등 연산자와 비교 연산자의 동작 방식이 달라서이다.
비교 연산자 >, <, >=, <= 는 null을 숫자형으로 변환하여 0으로 만든다.
동등 연산자는 형변환을 하지 않는다.
null이나 undefined를 동등 연산자 ==로 다른 값과 비교하면 무조건 false.
서로를 비교했을 때만 true!

 

자바스크립트의 이런 괴상한 특징은 많은 개발자들을 괴롭게 한다.

null과 undefined가 될 확률이 있는 변수가 > 또는 <의 피연산자로 올 때 주의 기울이기.

 

 

다른 언어엔 이런 일이 없기 때문에 관련한 밈이 있을 정도...

https://brunch.co.kr/@swimjiy/37

 

밈으로 알아보는 개발: 0 = '0' = [] ?

스폰지밥 밈으로 알아보는 JavaScript 비교 연산자와 형 변환 | 개발 지식을 무겁지 않게 다룰 수 있는 방법이 있을까 고민하다가 밈을 이용해 보기로 했습니다. 해석이 필요한 활자에 비해 뭔가 무

brunch.co.kr

 

아래 연산의 결과는?

console.log(" \t \n" - 2);
더보기

정답

 

-2

 

※ 왜?

공백 문자열은 0으로 간주됨.

 

이런 특징을 우습게 봤다가는 의문의 에러를 만날 수 있다.

웬만하면 동등연산자를 쓰는 게 정신 건강에 이롭다.

 

 

재밌는 영상이라 가져왔다.

자바스크립트 연산의 마스터가 되어보자.

 

https://www.youtube.com/watch?v=qW1V-o2RwKw&t=163s 

 

Comments