기술면접 실습

JS2L·2023년 1월 11일
0

발표하려고 정리한것들 - 스코프에대한 설명

스코프

스코프는 변수가 영향을 미치는 범위, 혹은 변수의 유효범위 라고 할 수 있습니다.(변수(variable)란 데이터(data)를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간을 의미)
스코프는 전역스코프(Global Scope)와 지역스코프(Local Scope)가 있습니다.
스코프는 네임스페이스라고도 할 수 있습니다.
하나의 스코프 내에서 각 식별자는 유일해야 하지만, 다른 스코프에는 같은 이름의 식별자를 사용할 수 있습니다.

전역스코프

전역 스코프는 블록{} 바깥이나 함수 바깥에 선언 된 변수 입니다.
window 객체의 프로퍼티가 된다.(window 객체의 메소드는 전역 함수이며, window 객체의 프로퍼티는 전역 변수)
전역이란 코드의 가장 바깥 영역을 의미합니다.
전역에서 변수를 선언할 경우, 그 변수는 전역 스코프를 갖는 전역 변수(global variable)가 됩니다.
전역 코스프에 변수를 선언하면 어떤위치의 코드에서든 사용할 수 있는 변수가 됩니다.
전역변수를 함수내에서 사용가능하듯 어떤 곳에서든지 사용 가능합니다.
전역 변수의 사용은 변수 이름이 중복될 수 있고 의도치 않은 재할당에 의한
상태 변화로 코드를 예측하기 어렵게 만드므로 사용을 억제하여야 한다.

지역스코프

지역 스코프는 코드의 특정 부분에서만 사용할 수 있는 변수 입니다.
지역스코프에는 함수스코프, 블록스코프가 있다.
지역이란 함수 몸체 내부를 의미합니다.
지역에서 변수를 선언할 경우, 그 변수는 지역 스코프를 갖는 지역 변수(local variable)가 됩니다.
함수 스코프는 말 그대로 함수 내부에서 선언 된 변수 입니다.
함수내부에서만 접근할 수 있습니다. (var, let, const 동일)
블록 스코프 또한 말그대로 블록{}, if문 , for문 블록 내부에서 선언 된 변수 입니다.
블록 내부에서만 접근 가능 합니다.
(단, 블록 내부에서 선언 한 변수는 블록 내부에서만 사용 가능 한게 정상이지만,
var은 내부에서도 선언 해도 바깥에서 접근 사용이 가능합니다.)

렉시컬 스코프

함수를 어디서 호출하는지가 아니라 어디에 선언하였는지에 따라 결정되는 것을 말한다.
함수를 어디서 선언하였는지에 따라 상위 스코프를 결정한다는 뜻이며
가장 중요한 점은 함수의 호출이 아니라 함수의 선언에 따라 결정된다는 점이다.
다른 말로, 정적 스코프(Static scope)라 부르기도 한다.

스코프체인

함수는 전역에서도 정의할 수도 있고 함수 몸체 내부에서 정의할 수도 있는데
함수 몸체 내부에서 함수가 정의되는 것을 함수의 중첩이라고 합니다.
스코프는 이러한 함수의 중첩에 의해 계층적 구조를 갖게 되고, 이처럼 스코프가 계층적으로 연결된 것을 스코프 체인이라고 합니다.
변수를 참조할 때 자바스크립트 엔진은 스코프 체인을 통해 해당 변수를 참조하는 코드의 스코프에서부터 시작해서
상위 스코프 방향으로 이동하며 선언된 변수를 검색하게 됩니다.
이를 통해 상위 스코프에서 선언한 변수를 하위 스코프에서도 참조할 수 있는 것이입니다.

var, let ,const 차이점

var 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언이 허용되기 때문에 부작용이 발생할 수 있습니다.
반면 let/const 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언이 허용되지 않으며, 중복 선언을 하려고 할 경우 SyntaxError가 발생합니다.
var 키워드로 선언한 변수는 함수의 코드 블록만을 지역 스코프로 인정하는 함수 레벨 스코프를 따르고
let/const 키워드로 선언한 변수는 모든 코드 블록(함수, <if문>, <for문>, <while문> 등)을 지역 스코프로 인정하는 블록 레벨 스코프를 따릅니다.

발표 내용

스코프란 무엇인가 설명하고 스코프의 두가지 종류를 설명함

피드백

설명을 차분하게 할것
스코프는 중괄호(키워드)를 기준으로 설명할것
함수의 body와 매개변수를 의미함 (?)

profile
신입 개발자의 독고다이 개발일지

0개의 댓글