인프런 커뮤니티 질문&답변
2.2) 단락 평가 활용 사례에서 질문
작성
·
13
0
2.2) 단락 평가 활용 사례에서 9:59
Truthy, Falsey 사용 관련 질문입니다.


person && person.name
수업 예시에서 person이 아예 undefined이면 person이 false니까 person.name을 아예 호출도 하지 않고, 따라서 오류가 발생하지 않는다고 이해했습니다.
그런데 person에 object만 선언하거나, object는 있지만 name 프로퍼티는 없는 경우 person은 true가 되지 않나요?
그렇다면 뒤에 있는 person.name을 호출하고 오류가 발생해야 할 것 같은데
코드를 돌려보니 오류가 발생하지 않고 undefined라고 표시됩니다.
왜 이런지 알 수 있을까요?
답변 1
0
안녕하세요 qkrgusld95님 이정환입니다.
printName({}) 과 같이 인수로 빈 객체를 전달했을 때나
printName({ language: "한국어" }) 와 같이 name 프로퍼티를 전달하지 않았을 때에
console.log(person && person.name) 에 오류가 발생하지 않는 이유는
인수로 그래도 객체가 전달이 되었기 때문입니다.
자바스크립트에서는 객체의 존재하지 않는 프로퍼티에 접근하는 것을 오류로 평가하지 않습니다.
해당 프로퍼티가 존재하지 않는다면 그냥 undefined를 반환합니다.
이 내용은 우리 강의의 1.15) 객체 챕터의 6분 40초에서 이미 다루고 있으니 해당 부분을 확인해보세요

대신 객체가 아닌 값에 점 표기법을 사용하면 그때는 오류가 발생합니다.




