원시,참조 자료형/스코프

김수영·2021년 6월 13일
0

JavaScript

목록 보기
9/28
post-thumbnail

원시 자료형(primitive type)

string, number, boolean, undefined, bigint, symbol
총 6가지

모든 원시 값은 불변하여 변형할 수 없습니다.
원시 값 자체와, 원시값을 할당한 변수를 혼동하지 않는 것이 중요합니다.
변수는 새로운 값을 다시 할당할 수 있지만,
이미 생성한 원시 값은 객체, 배열, 함수와는 달리 변형할 수 없습니다.

겉보기엔 원시 값처럼 보이는 null도 있지만,
사실 모든 Object, 모든 구조화된 자료형은 프로토타입 체인에 따라 null의 자손입니다.

참조 자료형(reference type)

객체(Object), 배열(Array), 함수(Function)

참조 타입은 변수에 할당할때 값이 아닌 데이터의 주소를 저장한다.

스코프(Scope)

무언가 제한 된 범위를 보기위해 사용되는 개념. 즉, 변수의 유효 범위를 볼 때 사용된다.

스코프는 중괄호 또는 함수를 기준으로, 바깥 스코프와 내부 스코프로 크게 나눌 수 있는데
이를 전역 스코프, 지역 스코프라고 정의하며,
전역 스코프 이하의 것은 모두 지역 스코프이다.
전역 스코프와 지역 스코프에서 각각 정의된 변수를 전역 변수, 지역 변수라고 한다.
전역 변수(바깥 스코프에 정의된 변수) -> 지역 변수(내부 스코프에 정의된 변수)
반대로, 내부 스코프에서 정의된 변수는 바깥 스코프 변수에 영향을 끼치는 것은 불가하다.

블록/함수 스코프

블록 스코프는 중괄호를 기준으로 구분하는 범위를 뜻하며,
함수 스코프는 함수(function) 키워드안에 들어있는는 함수 선언식 및 표현식의 범위를 뜻한다.
예외적으로, 함수 실행문 중 화살표 함수 ()=>{} 는 블록 스코프에 해당된다.

let/var/const의 차이

et 과 const 가 나오기 전, 개발자들은 변수 var 를 사용해왔다.
그렇다면 정확하게 var 는 어떤 변수일까?

앞서, 블록/함수 스코프를 기준으로 지역변수는 전역변수에 영향을 끼치지 못한다고 설명하였다. 하지만 블록스코프에서 var 를 쓰면 이를 무시하고 가장 최신에 썼던 변수명이
최종 리턴되어진다. (함수 스코프는 let과 동일.)

이러한 방식은 지역스코프 바깥을 벗어나도 실행이 되기 때문에
코드가 많이 들어가는 하나의 프로젝트를 진행 할 때 오류를 발생시키기 쉽다.
그리고 그럴일은 드물겠지만 let 키워드는 var 키워드와 다르게
재 선언을 방지하는 기능이 있다.
그렇기 때문에 안전성의 이유로 var 대신 let 키워드를 쓰는것을 추천한다.

const 는 변수가 아닌, 상수이다.
이말은, 변하지 않는 값을 말하며 한번 할당 시 재할당이 불가하다.
그럼에도 쓰는 이유는, 값의 변경을 최소화 하여 안전한 프로그램을 만들 수 있기 때문에
값이 재할당 될 일이 없다면 const 사용이 권장 된다.

profile
기술과 인문학의 교차점

0개의 댓글

관련 채용 정보