[Javascript] 원시자료형과 참조자료형, 스코프

Yuni·2022년 7월 11일
0

코드스테이츠

목록 보기
10/39

원시자료형과 참조자료형

원시자료형이란?

number, string, boolean, null, undefiend 같은 고정된 저장 공간을 차지하고 하나의 데이터를 담는 자료형을 원시자료형(primitive data type)이라고 한다.

  • 원시자료형은 스택 안에 있는 사물함 한 칸에 변수명을 붙이고 값을 넣는다.
  • 원시자료형은 값 자체에 대한 변경은 불가능하지만 변수에 다른 데이터를 할당할 수는 있다.
  • 원시자료형은 변수를 복사할 경우 값이 그대로 복사되기 때문에 복사 후에 데이터를 변경해도 원본에는 영향을 끼치지 않는다.

참조자료형이란?

대량의 데이터를 다루기에 적합한 배열객체, 함수는 참조자료형(reference data type)이라고 한다.

  • 참조자료형은 스택 안에 있는 사물함에 변수명을 붙이고 값으로 힙에 있는 참조자료형의 주소를 저장한다.
  • 힙 안에서는 데이터 사이즈를 늘릴 수도 있고 줄일 수도 있다(=동적으로 변한다)
  • 변수명에 주소를 저장하기 때문에 복사할 경우 주소가 그대로 복사되어 복사한 곳에서 데이터를 변경하면 주소에 있는 데이터가 변경된다.
  • 참조 자료형의 ===(strict equality)는 주소값이 같은지를 확인한다.

스코프

스코프란?

스코프는 범위라는 뜻으로 변수에 접근할 수 있는 범위를 가리킨다. 스코프는 중괄호(블록) 또는 함수에 의해 나눠지고 중첩이 가능하다.

전역 스코프(Global Scope)

전역 스코프는 전역에 선언되어 있어 어디서든 해당 변수에 접근할 수 있다.

지역 스코프(Local Scope)

지역 스코프는 해당 지역에서만 접근할 수 있으며 전역 변수보다 우선순위가 높다.

for(let key in obj){
 	 if(isBoolean){ // 블록 스코프
      	let type = "Boolean"; 
       
       	return `타입은 ${type}입니다!`;
     }
}

function hello(){ // 함수 스코프
	let name = "Tom"; 
  	
  	return `Hello ${name}`
}  

🚨 주의

  • 화살표 함수는 블록 스코프 취급이 된다.
  • var는 블록 스코프를 무시하고 함수 스코프(+화살표 함수)를 따른다.

var, let, const

window

window는 브라우저 창을 대표하는 객체지만 브라우저 창과 상관없이 전역 항목도 담고 있다. var로 선언된 전역 변수 및 전역 함수는 window 객체에 속한다.

🚨 주의

  • 선언 키워드 없이 변수를 할당하면 var로 선언한 전역 변수 취급이 된다.
    👉 strict mode 를 통해 예방할 수 있다. js 파일 상단에 use strict를 입력하기
  • vaar로 선언한 전역 변수가 윈도우 기능을 덮어씌워 내장 기능을 못쓰게 될 수 있다.
    👉 let을 사용하는 것을 권장
  • 전역 변수를 많이 선언하면 편리하지만 다른 함수, 로직에 의해 의도치 않은 상황이 발생할 수 있다(side effect)
profile
배운 것을 기억하기 위해 기록합니다 😎

0개의 댓글