자바스크립트 핵심가이드 6/E
2017년 4월 29일 ~
- 1장 자바스크립트소개(~17/4/19)
- 4장 표현식과 연산자(~17/5/1)
- 6장 객체 - p153(~17/5/4)
- 7장 배열 - p203(~17/5/11)
존재하지 않는 객체의 프로퍼티에 접근하려고 하면 에러가 발생한다. null
과 undefined
값은 어떠한 프로퍼티도 갖지 않기 때문에 이들 값에 프로퍼티로 접근을 시도하면 에러가 발생한다.
// book객체에 subtitle이라는 프로퍼티가 없는경우(undefined)
var len = book.subtitle.length;
TypeError를 발생한다.
book
과 book.subtitle
이 객체이거나 적어도 객체와 같이 동작한다는것을 확인하기 전까지는 book.subtitle.length
와 같은 표현식을 사용하면 안된다. 아래은 예외를 막기위한 방법이다.
// 1. 구체적이고 확실한 방법
var len;
if(book){
if(book.subtitle){
len = book.subtitle.length;
}
}
// 2. 간단하고 관용적인 방법. subtitle.length 값 또는 undefined가 반환된다.
var len = book && book.subtitle && book.subtitle.length;
좌변의 값이 "truthy" 면 && 연산자는 항상 우변의 값을 평가하고 반환한다.
var o = { a : "1", b : "2"}
Object.getOwnPropertyNames(o); //(2)['a','b']