반응형
const , let 변수의 유효범위
//변수의 유효범위
function scope1(){
if(true){
const a = 'hi';
console.log(a)
}
}
//변수는 블록레벨의 유효범위를 갖는다
//아래의 코드들은 작동하지 않는다
//에러 발생
function scope2(){
if(true){
const a = 'hi';
}
console.log(a)
}
//undifined 출력
function scope3(){
if(true){
console.log(a)
}
const a = 'hi';
}
//undifined 출력
function scope4(){
if(true){
console.log(a)
const a = 'hi';
}
}
let , const 변수는 한 블록내에서만 유효하다 즉 블록레벨의 유효범위를 갖는다 . scope 2 는 아래와 같은 에러가 발생한다 .
scope 3,4는 같은 경우에는 같은 블록내에 위치하지만 변수 a 를 사용하는 메서드가 위에 먼저 선언이 되어 있기 때문에 에러가 나지 않고 값이 할당되지 않았기 때문에 undifined 가 출력된다 .
var의 유효범위
function scope2(){
if(true){
var a = 'hi';
}
console.log(a)
}
var 변수는 함수레벌의 유효범위를 같는다 때문에 위와 같은 코드가 정상적으로 작동된다 .
변수 a 는 if 문 블럭안에 있지만 if 문 블락 밖의 메서드에서 사용이 가능하다 .
var 같은 경우에는 의도하지 않은 곳에서 해당 변수가 사용될 가능성이 있으며 , 메모리를 그 만큼 넓은 범위에서 메모리를 차지하고 있기 때문에 메모리 누수를 일으킬 수 있다 .
반응형
'JAVASCRIPT' 카테고리의 다른 글
javascript 공부 7 - 기본개념3 (배열을 다루는 메서드들) (0) | 2021.08.06 |
---|---|
javascript 공부 6 - 기본개념2(클래스 , this, ES6의 class , 상속) (0) | 2021.08.06 |
javascript 공부 5 - 기본개념1(화살표 함수 , IIFE(즉시 실행 함수) , 호이스팅 , 타이머 함수, 콜백) (0) | 2021.08.06 |
javascript 공부 3 - 형 변환(Type conversion) (0) | 2021.08.05 |
javascript 공부 1 - node.js , npm(node package manager) (0) | 2021.08.05 |