본문 바로가기
Programming/하루 일기

null == undefined?

by peter paak 2020. 6. 26.
728x90

자바스크립트 내용을 검증하는 과정에서 null이 undefined까지 커버 할 수 있다는 것을 보았다. (그전에는 그렇게 크게 생각해보지는 않았다)

class Assert {
    static notNull(data) {
        if (data == null) {
            throw "Null point exception"
        }
    }
}

위의 코드는 아래의 테스트를 모두 통과한다

describe("assert integration test", function () {

    it("notNull", function () {
        expect(() => Assert.notNull())
            .toThrow();
    });

    it("notNull with undefined", function () {
        expect(() => Assert.notNull(undefined))
            .toThrow();
    });

    it("notNull with null", function () {
        expect(() => Assert.notNull(null))
            .toThrow();
    });
}

첫번째 부터 순서대로 입력값이 undefined, null, undefined가 된다. 좀 더 자세히 보니 재미있는 점이 있었는데 이곳에 자세히 나와 있다. 하지만 이렇게 검증을 계속 해도 되는 것이 의문이다. 어떤 예외사항이 있는지는 짬이 안되서 잘 모르겠지만 나오는 대로 대처하는 방법을 찾아봐야겠다

정리하면 다음과 같다

  • null은 할당된 값이다. 의미는 없다(nothing)라는 뜻
  • undefined는 선언(declare)되었지만 아직 정의(define)되지는 않았다라는 뜻
  • null과 undefined는 false
  • null과 undefined는 모두 원시값, 하지만 typeof null = object이다
  • null !== undefined 하지만 null == undefined

아마 타입 체크까지하면(===,는는는) null은 object 타입이라 타입이 없는 undefined와 다르게 나올 것이고, 단순 비교(==,는는)는 타입 체크 안하니 같게 나오는 듯하다

728x90