Skip to content

Latest commit

 

History

History
52 lines (41 loc) · 2.99 KB

boolean.md

File metadata and controls

52 lines (41 loc) · 2.99 KB

boolean

-말도안되는 경우-

undefined < null            // false
undefined > null            // false
undefined === null          // false

NaN === NaN                 // false
NaN !== NaN                 // true

"11" < "2"                  // true
"2" < 5                     // true
5 < "11"                    // true

===와 !== 는 양쪽 피연산자가 NaN인 경우를 제외하면 기대한 대로 동작한다. ===와 !==는 값이 null이거나 undefined거나, 아무튼 NaN이 아닌 다른 값인지를 검사하기 위해 쓸 수 있다. Value가 NaN인지 확인하려면 반드시 Number.isNaN(value)를 써야한다.

반복문의 종료 조건을 검사하기 위해 === 연산자를 사용하고 싶다면 종료 조건을 나타내는 변수 값이 안전한 정수 범위 안에 있는 경우만 사용해야한다. 안전한 볌위 안이라고 해도 ===보다는 >= 연산자가 더 안전하다.

비교 연산자 역시 양쪽 피연산자가 둘다 문자열이거나 둘 다 숫자이면 제대로 동작한다. 그 외의 경우는 말도 안되는 결과가 나온다. 그러므로 비교 연산을 할 때는 자료형을 섞어 쓰면 안된다. 자바스크립트는 자료형을 섞어 쓰는 것을 어떤 형태로든 막지 않기 때문에 알아서 규칙을 만들어야 한다.

== 와 !=

자바스크립트에는 신뢰해서는 안 될 비교 연산자가 있다. 특히 !=와 == 는 절대 사용하지 않길 권장한다. 거짓 양성(false positives)과 거짓 음성(false negatives)이 발생할 수 있다. 그 대신 꼭 ===와 !==를 사용해야 한다.

boolean이 제대로 쓰이는 위치

  • if 문의 조건문 위치
  • while 문의 조건문 위치
  • for 문의 조건문 위치
  • do 문의 조건문 위치
  • ! 연산자의 피연산자 위치
  • && 연산자의 양쪽 피연산자
  • || 연산자의 양쪽 피연산자
  • ?와 : 로 구성된 삼항 연산자의 첫 번째 피연산자 위치 (? 앞)
  • Array 의 filter, find findIndex, indexOf 메서드의 첫번째 인자로 전달되는 함수의 반환값

잘 설계된 언어라면 이런 위치에서는오직 불 값만 사용하도록 할 것이다 하지만 자바스크립트는 여기에 아무 값이나 사용하도 된다. 이런 언어의 모든 값은 ‘불인척하는’ 자료형에 포한된다. ‘불인 척하는’ 자료형에 속한 값은 ‘참일고 볼수 있는 값(truthy)’ 이거나 ‘거짓이라고 볼 수 있는 값(falsy)’ 둘중에 하나이다.

거짓이라고 볼 수 있는 값은 다음과 같다.

  • false
  • null
  • undefined
  • “”
  • 0
  • NaN 다른 모든 값은 ‘참이라고 볼 수 있는 값’에 해당한다. 여기에는 빈 객체, 빈 배열, 그리고 언뜻 보면 ‘거짓이라고 볼 수 잇는 값’ 처럼 보이는 ‘false’나 ‘0’같은 문자열이 포함된다.

그러므로 조건문은 true이거나 false여야 하고, 다른 값들은 반드시 에러로 간주되어야 한다.

#HowJavaScriptWorks #HowJavaScriptWorks/boolean