Java script 의 구성 #스코프와 호이스팅

달다로·2024년 6월 3일
0

JS

목록 보기
8/26
post-thumbnail

📌 스코프 (scope)


  • 영역
    • 변수함수 가 어디에서 접근 가능한지를 결정함 (유효한 범위)
    • 어디부터 어디까지가 내 공간인지 정해줌
  • 같은 scope 내에서 동일 scope 를 만들 수 없다.
  • 중첩이 가능하다. (안에서 없으면 점점 찾을때까지 바깥쪽에서 찾음 = 탐색매커니즘)
  • 잘못사용되는 것을 최대한 방지하기 위해서 사용된다.

1) 전역스코프 (Global Scrope)

const fesult = MyFeat() + 10;
어떤것에도 감싸져있지 않은 스코프, 모두가 접근 가능하다. (최상위)

const message = "Hello"; // 전역 스코프
function sayHello() {
    console.log(message);} // 전역 스코프에 있는 변수에 접근 가능
sayHello();

2) 지역스코프 (Local Scope)

  • 함수스코프
    함수 내에서 만들어진 변수
function sayHello() {
    const message = "Hello"; // 지역 스코프
    console.log(message); // 함수 안에서만 접근 가능
}
sayHello();

3) 블럭스코프 (Block Scope)

  • 중괄호로 둘러싸인 부분을 의미함
  • 주로 제어구조에서 사용된다. (if, for, while ...)
if (true) {
    const message = "Hello"; // 블록 스코프
    console.log(message);} // 블록 안에서만 접근 가능

📌 호이스팅 (hoisting)

  • 변수함수 를 위로(최상단) 끌어올리는 것처럼 동작한다.
    위로 끌어올리면 코드를 실행하기 전에 미리 변수와 함수가 준비되어 있는 상태가 된다.

변수 호이스팅
변수 선언 후 값을 할당한 후에도 변수가 호이스팅 되어 선언부만 먼저 실행됨

console.log(myNumber); // undefined 출력
var myNumber = 10;
console.log(myNumber); // 10 출력

함수 호이스팅
함수를 선언하기 전에도 호출 가능

const a = 7
double() // 기본적으로 함수 아래에 위치하는데 호이스팅을 이용해서 위로 올려도 값이 나온다!
function double() {
	console.log(a * 2) 
}

값이 옮겨질 때

  • 복사
    값이 복사되는 것
let a = 10;
let b = a;

console.log(b);

b = 100;

console.log(a); // 10

그 외의 모든 값

  • 참조
    참조되는 값은 모두 객체이다.
    x 와 y 는 (id: 1)을 바라보고 있다.
let x = {id: 1};
let y = x;

console.log(y, d);

y.title = 'Y';

console.log(x.title)
profile
나이들어서 공부함

0개의 댓글