재미로 풀어본 JS quiz 사이트인데 소소하게 팁들을 알게되어 정리해본다!
https://javascriptquiz.com/?fbclid=IwAR31L9U2qjkB_krPoQtn2R_F6RShcez6-hZzwmf8rdTHWmaOmGQJEkaUdrw



📓  Quiz 1

1
2
3
4
const isTrue = true == [];
const isFalse = true == ![];

console.log(isTrue + isFalse);

📝   A:   0

  • 빈 배열은 당연히 truthy라고 생각해서 isTruetrue가 된다고 생각했고, isFalsefalse라고 생각해서 1 + 0으로 답은 1일 줄 알았다.
  • 하지만 true == []false
  • 구글링한 결과, 아래 stack overflow에서 답을 찾을 수 있었다.

if ([]) called on object (Array is instance of Object in JS) will check if the object is present, and returns true/false.

When you call if (arr == false) you compare values of this object and the primitive false value.


1
if([]) 'true'  // 'true'

위의 if문에서는 객체가 존재하는지 확인하고 값을 반환한다.
하지만 문제처럼 값을 비교하게 된다면 객체의 값과 비교하는 것이므로 false를 반환하는 것이다.
실제로 true == ['1']true이다.