(2023. 01. 03) Section1, JS 원시,참조 타입 데이터, 스코프

지인·2023년 1월 3일
0

JavaScript

목록 보기
9/32

원시 타입 데이터

(string, number, boolean 등)
하나의 변수에 하나의 데이터(값)가 들어가는 데이터

참조 타입 데이터

(배열, 객체, 함수 등)
하나의 변수에 하나의 데이터(주소)가 들어가는 데이터, 주소만 참조하므로 동적으로 크기가 변한다.

스코프

학습 목표

  • 스코프의 의미와 적용 범위를 이해한다.
  • 스코프의 주요 규칙을 이해한다.
  • 전역 스코프와 지역 스코프의 차이를 이해한다.
  • block scope와 function scope의 차이를 이해한다.
  • 변수 선언 키워드(let, const, var)와 스코프와의 관계를 설명할 수 있다.
  • 전역 객체가 무엇인지 설명할 수 있다.

스코프는 변수에 접근할 수 있는 범위를 말한다. 중괄호(블록) 안쪽에 변수가 선언되었는가, 바깥쪽에 변수가 선언되었는가가 중요하다. 이 범위를 우리는 스코프라고 부른다.

let username = 'coding';
let (username) {
  let message = `Hello, ${username}`;
  console.log(message);  // 'Hello coding'
}

console.log(message); // ReferenceError

상단의 코드에서 username은 전역적으로 선언되어(바깥쪽에서 선언되어) 어디서든 사용할 수 있지만, message는 함수 안에서 선언되어(중괄호 안쪽에 선언) 함수 안에서만 사용할 수 있다.

스코프의 종류 2가지

  1. 블록 스코프
    중괄호를 기준으로 범위 구분
if (true) {
	let message = '사실입니다.';
  	console.log(message);
}

let getAge = user => { return user.age; } // 화살표 함수는 블록 스코프로 취급한다. 그러므로 user부터 끝까지 블록 스코프 취급
  1. 함수 스코프
    함수로 둘러싼 범위로 구분
function getName(user) { // 모두 함수 스코프
  return user.name;
}

let getAge = function(user) {  // 앞의 let getAge = 부분을 제외하고 모두 함수 스코프
  return user.age;
}
  1. var 키워드
    var 키워드로 정의한 변수는 블록 스코프를 무시하고, 함수 스코프만 따른다(for문 스코프,if문 스코프 무시하고 전역으로 만들어버림). 근데 또 화살표 함수의 블록 스코프는 무시하지 않는다.

  2. 보너스로 개발자 도구에서 breakpoint 사용해서 스코프 확인하는 법

profile
안녕하세요

0개의 댓글

관련 채용 정보