자바스크립트에서 불리언 결과가 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이다.) 주의해야 한다.




Posted by 살레시오
,