반응형
Java의 Scope
{ } 영역 안으로만 변수를 사용할 수 있습니다.
int a = 10;
if(a == 10){
System.out.println(a);
int b = 20;
System.out.println(b);
}
System.out.println(a+b); //error
JavaScript의 Scope
{ } 코드 블록으로 영역을 나누지 않습니다.
자바스크립트는 특정 구문이 실행 될 때 새로 생성합니다.
function : 함수, 가장 많이 사용
with : 곧 사라질 구문(ECMAScript6부터 Deprecated)
catch : 예외처리 구문
var a = 10;
if(a === 10){
console.log(a);
var b = 20;
console.log(b);
}
console.log(a+b); //OK
function을 활용한 스코프 생성
function foo(){
var val = 'hello JS';
}
console.log(typeof val === 'undefined'); //true
with를 활용한 스코프 생성
with({inScope : 'hello'}){
var val = 'world';
console.log(inScope);
}
console.log(typeof inScope ==='undefined'); //true
console.log(val ==='world'); //true
//with 구문은 코드가 모호 해질 가능성 아주 높다
catch를 활용한 스코프 생성
try{
throw new exception('fake exception');
} catch (err){
var value = 'catch scope';
console.log(err instanceof ReferenceError === true); //true
}
console.log(value === 'catch scope'); //value 사용가능
console.log(typeof err === 'undefined'); //err 사용불가
catch 구문의 매개변수 err는 해당 스코프내에서만 포함되고,
catch 구문의 { } 내부의 변수는 외부에서도 접근 가능합니다.
728x90
반응형