이 문제 또한 내가 종종 겪던 일이었다.
열심히 강의를 따라하다보면 어느순간 에러가 뜨고
console.log()를 찍어보면 어쩌고저쩌고 null
어쩌고저쩌고 undefined
이런 글자들을 자주 마주하게되었다
특히 undefined는 자주 직면하던 문제였는데 이번에 이노무자식이 도대체 뭔지를 정확히 알게되었고 이걸 읽는사람도 알게해주겠다.
라고는 했지만 뭐 대단한게없다.
undefined는 어떤 변수,키에 값이 없을경우에 뜨게된다.
예를들면
let 뭥미 = ''
이런식으로 값이 할당이 안되어있으면 undefined가 뜨게된다.
또한 let 우와 = {
'정우성':'존잘',
'한지민':'존예'
}
인데 우와.저는요; 와 같이 세상에 존재하지않는것을 출력하려하면
undefined 가 뜨게된다.
이것은 배열에서도 마찬가지인데 없는인덱스를 넣어 출력하려고 해도
undefined가 뜬다.
함수에서도 마찬가지로 무언가를 열심히 써놓았는데 리턴값을 안주면 undefined 가 뜬다.
예를들어
function 오예스(얼려,존맛){
const 우유랑 = 얼려 + 존맛
}
이래놓고 return 을 안시키면
undefined 가 뜨게된다.
이쯤되면 대충 알겠지?
또 undefined와 비슷해서 햇갈릴만한 것이 null 이란 건데
💡 `**typeof null` 의 결과가 `object` 로 나오는 이유는?** 자바스크립트의 typeof 키워드에서 `null` 에 대한 예외처리가 되어있지 않은 버그가 있었지만, typeof를 사용하는 모든 웹 사이트에 영향을 끼칠수 있기 때문에 수정되지 않고 있습니다. [(참조)](https://2ality.com/2013/10/typeof-null.html) 라는 내용이 있으니 일단 " typeof null 의 결과가 object로 나오는 이유는 typerof 키워드에서 null 에 대한 예외처리가 되어있지 않은 버그가 있구나.근데 이거 바꾸면 그동안 썻던 웹사이트들이 대참사가 일어날수있으니 그냥 두기로하자." 그렇구나 하고 인지하고있도록 하고"null" 널 이놈은 뭐가 다른가 한번 보자.
null은 값이 비어있음을 나타내는데 포괄적으로는 undefined와 다를바가 없다.
내가 위에서 말한 === 이거 안되네 ? == 이건되네 ?
이 경우에도 언디빠인드와 널을 === 요래 하면 뽈스가 나오지만
== 요래 하면 트루가 나올정도로 유사하다고 볼수있다.
근데 뭐가다르냐 하면
null은 내가 명시적으로 "이건 값이 없다!" 라고 하기위해서
할당시켜놓는 값이라고 생각하면된다.
예를 들면
let a;
이래놓고 console.log(a) 를해서 " 자바스크립트선생님 a 불러보세요" 라고 하면
잡스 선생님은 a가 뭔가 찾다가 ;땀만 삐질삐질 흘리고 돌아와서
undefined요.. 하는것이고
null은
let a = null
console.log(a)
하면 null 이라며 할당된 null을 반환해주는것이다.
언디뽜인도 할당은 가능하지만 null과 본질적으로 무엇이 다른지 정도는 이해하자.
null은 명확하게 값이 없다! 일때 붙인다고 일단 알고있자!