<aside> 💡 1번 코드는 에러가 나고, 2번 코드는 통과가 되는데 똑같은 것 아닌가요?
</aside>
if(obj[key].length === 0){
return 0;
}
if(!Array.isArray(obj[key])) {
return 0;
}
if(!Array.isArray(obj[key])) {
return 0;
}
if(obj[key].length === 0){
return 0;
}
부모가 undefined
인 변수(obj[key]
)에 .length
를 찾으면 TypeError가 발생해서현재 마지막 질문을 통과를 못하고 있습니다.
if(!Array.isArray(obj[key])) {
return 0;
}
이 조건은 obj[key]
가 undefined
인 경우 true
를 반환하기 때문에obj[key]
가 undefined
인 케이스를 걸러주고 있습니다.
즉, 두번째 코드는 obj[key]
가 있는 경우에만 (undefined
가 아닌 경우),obj[key].length === 0
인 조건을 충족했을 때 return 0
을 하고 있기 때문에 오류가 나고 있지 않는 것입니다.
나중에 prototype과 상속을 배우시게 되면 object, array, string는 length라는 메소드를 가지고 있지만 undefined는 가지고 있지 않다는 것을 직접 확인하실 수 있습니다 !