자바스크립트 기초 5

공부는 혼자하는 거·2021년 5월 2일
0

JS 객체 소환법

자바스크립트에서 기본타입을 제외한 모든 값은 "객체" 여기서 객체란, ‘이름(key): 값(value)’형태의 프로퍼티를 저장하는 일종의 컨테이너라 보면 됨. 기본타입 객체는 하나의 값만을 갖지만, 참조타입 객체는 여러 개의 값을 가질 수 있슴. 객체의 프로퍼티로 함수가 포함할 수 있으며, 이러한 함수 프로퍼티를 "메서드"라고 함.

  • Object() 생성자 함수
var me = new Object(); 
me.name = ‘NY KIM’; me.gender = ‘female’; 
me.age = 25; 
console.log(me); //결과: { name: ‘NY KIM’, gender: ‘female’, age: 25 }
  • 객체 리터럴 방식
var me = { name : ‘NY KIM’, gender: ‘female’, age: 25 };
  • 객체에 접근방법
me.name
me[‘name’] //프로퍼티가 표현식이거나 예약어인 경우 대괄호 접근법을 써야 합니다!

me.full-name //불가. 출력값: NaN 
me['full-name'] //가능

full(undefined)에서 name(undefiend)을 빼는 연산을 했기 때문이죠.
undefined는 존재하지 않는 프로퍼티값에 접근할 때 출력되며, NaN은 수치 연산을 해서 정상적인 값을 얻지 못할 때 출력됩니다.

객체에 접근하여 값을 할당했을 때,

해당 프로퍼티가 있으면 → 값을 갱신하고,
해당 프로퍼티가 없으면 → 값을 할당한다

https://nykim.work/33

undefined 와 null

undefined 는 데이터 타입이자 값이다. 아무 것도 존재하지 않는 다는 표현의 값으로 생각하면 좋을 듯하다. 모든 변수에 값이 할당 되지 않는 경우 이 undefined는 값으로써 값이 할당되지 않은 모든 변수들이 자바스크립트 Runtime 시 할당되어 출력되게 된다.

undefined는 ‘없음'을 뜻하는 데이터 타입이다. 근데 자바스크립트에도 다른 정적 언어와 마찬가지로 null 이라는 데이터 타입이 존재한다.

const n = null;
console.log(typeof n);

null 도 데이터 타입이기 때문에 null 이라는 출력값을 기대할 수 있겠지만 전혀 예상과 다른 값이 나온다.

이건 명백한 자바스크립트의 오류이다.

그래서 둘의 차이는?

undefined은 개발자가 의도적으로 값을 할당할 필요가 없다. 자바스크립트가 코드를 실행할 때 변수에 적절한 값이 할당 되어있지 않거나 아래 함수처럼 return 이 없는 함수를 실행할 때 undefined 를 출력한다.

function a() { console.log(123) }

반면 null은 개발자가 명시적으로 변수에 할당한 값 이기 때문에 필요한 곳에서 사용 했구나 라고 인식하면된다. null은 GC 가 쓰지 않는 메모리를 수거할 때 유용하다

https://medium.com/crocusenergy/js-undefined-null-%EC%96%B4%EB%96%A8-%EB%95%8C-%EC%93%B8%EA%B9%8C-8782dc3c35b6

profile
시간대비효율

0개의 댓글