#07.TIL | JavaScript(Null & Undefined)

Seongjae Hwang·2021년 11월 3일
0

Data Type

JavaScript에는 다양한 Data Type들이 존재하고 있다. Boolean, String, Number 등을 배웠고, 신기했던 부분은 서로 다른 Data Type인 Number와 String과 서로 더하거나 뺄 수 있다는 것과 나의 생각대로 원하는 결과가 아닌 프로그래밍은 철저하게 순서대로 실행된다는 것이다.

console.log("3 더하기 3은 " + 3 + 3 + "입니다.")

예를 들어, 다음과 같은 코드가 있다고 하면 나의 생각으로는 3 + 3의 값인 6이 String과 더해져 "3 더하기 3은 6입니다."라는 결과를 예상했었다. 하지만, 결과는 아래와 같이 나왔다.

먼저, 이렇게 나오게 된 이유는 2가지가 있다. 첫번째는 String 과 Number를 더하게 되면 항상 String으로 변환된다는 것, 두번째는 프로그래밍은 철저하게 왼쪽에서부터 순서대로 실행된다는 것이다.

만약, 내가 3+3이 아닌 그냥 3을 더했으면 겉으로 봤을때 원하는 값을 얻었을 수도 있지만 내가 보고 있는 마지막 3은 더이상 Data Type이 Number가 아닌 String이다. 그러므로, 이 속성을 왼쪽에서 부터 적용하게 되면,

첫번째 박스에서 String + Number의 결과값으로 String Type인 "3 더하기 3은 3"이라는 결과가 나오게 되고, 순서대로 두번째 박스에서 String + Number의 결과값으로 역시 String Type인 "3 더하기 3은 33"이라는 결과가 나오게 된다.

그래서 결국 서로 다른 Data Type의 덧셈이 필수적이라면 괄호를 씌워서 해결할 수도 있고, 앞으로 데이터간 연산이 필요할때는 Type을 신경써서 원하는 결과값을 도출해야겠다는 생각이 들었다.

Null vs Undefined

null은 값이 없고, undefined도 값이 없다. 그러나 Data Type은 다르고, 아무튼 다른 존재이다. 처음 이 말을 들었을때는 그냥 받아들였는데 생각하면 할수록 궁금해져서 정확히 어떤면에서 다른지 궁금해서 공부해보았다. 먼저, typeof를 사용하여 비교해보면 다음과 같은 결과가 나온다.

분명히 null은 값이 없는데 결과는 Object가 나온다. 그렇다면 instanceof 연산자를 통해 null이라는 object의 프로토타입 체인에 Object가 존재하는지 판별하면 true라는 결과값을 도출돼야 한다.

false가 나왔다. 구글에 검색을 해보니 null은 특별한 값이라고 하니 값이 없지만 typeof를 사용하면 object라는 결과가 나온다는것 정도만 인지하고 있어야겠다. 따라서, null 과 undefined의 차이점은 등록, 저장여부인데 undefined는 자주 볼 수 있고 null은 잘 못봤던 이유이기도 하다. null은 선언, 등록을 하는 값이고 undefined는 미리 선언된 값이다.

profile
Always Awake

0개의 댓글