요즘 JavaScript The Definitive Guide를 보고 있다
영어도 못하는 녀석이 이 책보느라고 고생이다
여태까지는 깊이 와닫는 부분이 없었는데.. 오늘 정말 모르던것을 알아버렸다!!!
만일 obj_id라는 ID를 갖는 HTML Element가 없는경우에
document.getElementById("obj_id")의 결과는 null 이다
그런데 alert(typeof(null)) 하면 object 가 찍힌다.. 자바스크립트는 null도 object로 인식한다
뭐 여기까지는 많은 사람들이 알고 있을것이다. 물론 나도 알고 있었고..
그런데 내가 일반적으로 특정 object가 있는지 없는지 확인하던 그 1번 if문이 틀린거였다
실제로 1번 2번 스크립트를 실행하면 둘다 alert가 뜬다. null , undefined 둘다...
null 이랑 undefined를 비교할때는 === 나 !== 를 써야 한단다..
동치 비교라고 하는데 값 뿐만아니라 형식까지 비교하는 연산자다
책에는
When null is used in a Boolean contentx , it convers to false. When used in a numeric context , it convert to 0 . and when used in a string context, it converts to "null".
When undefined value is used in a Boolean context, it convers to false. When used in a numeric context, it converts to NaN. and when used in a string context, it converts to "undefined"
이렇게 되어있는걸로 봐서는 둘다 false 값으로 변해서 값이 동일하기 때문에 값만 비교해서는 정확한 비교가 안이루어지는것 같다...
이제 특정 object가 있는지 없는지 판단할때는 반드시 === 를 사용하는 습관을 들여야 겠다
펌글)
댓글 없음:
댓글 쓰기