[javascript] 자바스크립트 -1 은 true

[javascript] 자바스크립트 -1 은 true

자바스크립트 1 은 true.

자바스크립트 0 은 false.

여기까지는 그렇다 치자.

자바스크립트 -1 은 true 다.

다음은 테스트 코드다.

function testNum2Bool(_num) { if (_num) { return true; } else { return false; } }

라는 함수 생성.

testNum2Bool(1)
결과 => true

testNum2Bool(0)
결과 => false

testNum2Bool(-1)
결과 => true

이걸 찾아보게 된 이유는 일하다가 if (str.indexOf(“찾는 문자열”)) { … } 이라는 코드를 보고 의구심이 들었기 때문이다.

indexOf는 대상 문자열에서 찾는 문자열이 존재하는 경우 위치를 리턴하는 함수이다.

예를 들어, 대상 문자열에서 찾는 문자열이 발견되지 않으면 -1을 리턴한다.

문제는 자바스크립트가 -1 을 true로 인식한다는 점이다.

찾는 문자열이 첫번째 위치하는 경우(0을 리턴하는 경우)를 제외하고, 문자열이 존재하든 존재하지 않든 if 문 안쪽을 타게 된다는 뜻이다.

정리하면, indexOf는 정석대로 if (str.indexOf(“찾는 문자열”) > -1) { … } 로 코딩해야 한다.

자바스크립트 형 변환은 절대 믿을게 못된다.