자바스크립트에서 불리언 결과가 false로 판명되는 것들은 다음과 같다.
- undefined, null
- NaN
- 0 (숫자 리터럴) , -0
- “” (빈 문자열)
- false
주의할 점은 빈 문자열은 false 이지만 빈 배열, 빈 객체는 true라는 것이다.
> Boolean("")false> Boolean([])true> Boolean({})true |
그리고 NaN은 그 자신과 같지 않은 유일한 자료형이다.
> undefined == undefinedtrue> null == nulltrue> NaN == NaNfalse |
논리 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이다.) 주의해야 한다.
댓글 없음:
댓글 쓰기