JS - scope, hoisting

이호현·2020년 7월 22일
0

JS

목록 보기
3/14

1. scope

-변수나 함수를 선언 할 때, 유효한 범위

global scope

scope가 전역
global scope에서 선언된 변수는 어디서나 접근 가능

const g_val = 'g_val';

function scope

scope가 함수내부

function f_scope(){
    const f_val = 'f_val';
}

block scope

scope가 block내부

{
  const b_val = 'b_val';
}

scope 사용

block scope안에서 선언된 변수에 접근 불가

{
  const b_val = 'b_val';
}

console.log(b_val);		// **에러**

scope 밖에서 선언된 변수에는 접근 가능

const b_val = 'b_val';

{
  console.log(b_val);		// b_val
}

2. hoisting

-변수를 선언할 때는 var를 사용할 때 변수나 함수의 호출되는 시점이 선언되는 시점보다 먼저라면 선언을 위로 끌어올려서 사용

예시

hoisting이 발생하면 undefined

console.log(val);		// undefined

val = 'val2';

console.log(val);		// val2

var val = 'val1';

아래에서 변수에 값을 할당해도 같은 현상이 발생

console.log(val);		// undefined

val = 'val2';

console.log(val);		// val2

var val = 'val1';

위 내용을 풀면 다음과 같음

var val;

console.log(val);		// undefined

val = 'val2';

console.log(val);		// val2

val = 'val1';

console.log(val);		// val1

let을 사용하면 에러

console.log(val);

val = 'val2';

console.log(val);

let val = 'val1';
profile
평생 개발자로 살고싶습니다

0개의 댓글