-변수나 함수를 선언 할 때, 유효한 범위
scope가 전역
global scope에서 선언된 변수는 어디서나 접근 가능const g_val = 'g_val';
scope가 함수내부
function f_scope(){ const f_val = 'f_val'; }
scope가 block내부
{ const b_val = 'b_val'; }
block scope안에서 선언된 변수에 접근 불가
{ const b_val = 'b_val'; } console.log(b_val); // **에러**
scope 밖에서 선언된 변수에는 접근 가능
const b_val = 'b_val'; { console.log(b_val); // b_val }
-변수를 선언할 때는 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';