2015년 10월 9일 금요일

자바스크립트에서 false로 간주되는 것들

 자바스크립트에서 불리언 결과가 false로 판명되는 것들은 다음과 같다.

  • undefined, null
  • NaN
  • 0 (숫자 리터럴) , -0
  • “” (빈 문자열)
  • false

주의할 점은 빈 문자열은 false 이지만 빈 배열, 빈 객체는 true라는 것이다.

> Boolean("")
false
> Boolean([])
true
> Boolean({})
true

그리고 NaN은 그 자신과 같지 않은 유일한 자료형이다.

> undefined == undefined
true
> null == null
true
> NaN == NaN
false

논리 or (||) 연산자를 이용하여 자바스크립트에는 지원하지 않는 default parameter 를 구현할 수 있다.

function func(a) {
  if (a == undefined) a = 1; //(*)
  ...
}

위와 같이 하면 func(0)이라고 호출하면 변수 a는 사용자가 지정한 대로 0값을 가지지만 func() 라고 호출해도 내부 변수 a는 1값을 가지게 된다.

 루아 프로그래머는 위의 (*)를 다음과 같이 더 간단하게 할 수 있지 않느냐고 생각할 지 모른다.

a = a || 1

하지만 func(0) 으로 호출하면 a는 내부적으로 1로 바뀌어 버린다. 0은 false로 간주하기 때문이다. (루아에서는 숫자 0은 true이다.) 주의해야 한다.


댓글 없음:

댓글 쓰기