이렇게 하면 배열이 비어 있는지를 신속하게 판별할 수 있다고 볼 수 있지만 원리에는 약간의 의문이 있습니다.
알려진 것:
1. 항등 연산자 "==": 먼저 변환한 다음 비교합니다. 피연산자 중 하나가 부울이면 동일한지 비교하기 전에 숫자 값으로 변환됩니다. False는 0으로 변환되고 true는 1로 변환됩니다.
2. 한 피연산자가 객체이고 다른 피연산자가 아닌 경우 객체의 valueOf() 메서드를 호출하고 얻은 기본 유형 값을 사용하여 변환합니다.
그래서 []==fasle의 오른쪽은 0으로 변환됩니다. 왼쪽은 어떻습니까? 어떻게 변환되나요?
이것은 당신을 위한 자바스크립트 비교표입니다: 관계형 연산자와 동등 연산자
http://tech.youzan.com/javasc...
읽고 나면 이해가 되실 겁니다
비교를 위해 불리언 값으로 변환하기 때문에
[]==false
=>
true == false //false
먼저 숫자 0으로 변환한 후 비교하세요.
배열이 비어 있는지 판단하기 위해 이 방법을 사용하는 것이 합리적이겠죠?
으아악안 튕길 줄 알았는데 튕겼어요. 대부분의 경우 여전히 길이로 판단됩니다. 물론 길이도 요소 수를 판단할 때 함정입니다!
js의 내부 메커니즘은 빈 배열이 false이므로 false==false가 true라고 말할 수 있습니다! 그러면 비어 있지 않은 배열이 자연스럽게 true로 변환되고 true==false는 true가 아닙니다! 이해하기 어려운 점이 있나요?