20.12.02 SCOPE
20.12.02
JS에서 SCOPE의 의미를 알기
Local scope범위에서 선언된 함수는 밖에서 사용될수없음
JS는 함수 선언되는(lexical) 동시에 자신만의 Scope(범위를 가짐)
let name ="Richard"
function showName(){
let name ="jack";
console.log(name); //name은 showName함수안에서만 작동
}
console.log(name);
//Richard
showName();
console.log(name)
// jack
변수를 정의하는 또 다른 키워드 VAR
Var로 선언할떄는 블락밖에서 가능 (함수단위로 자신만의 scope)
let로 선언할때는 블락밖에서 불가능 (Block 단위로 구분)
for(let i=0; i<5;i++){
console.log(i)
}
console.log('final i:',i)
0
1
2
3
4
// let일때는 final i:에 도달할수없음
for(var i = 0; i<5;i++){
console.log(i)
}
console.log('final : i', i)
0
1
2
3
4
final : i 5
// var로 선언했을떄는 'final:i에 도달할수있음
Let키워드와 동일한 Block Scope를 따른다
값을 재정의 하면 TypeError가 나온다
Block scope / Function Scope
값 재정의 가능 / 불가능 /재정의 가능
재선언 둘다(let,const) 불가능 / 가능 (문제가 생길수있음)(아무런 에러가 안나서 문제가됨)
전역범위를 대표하는 객체 window
전역변수에서 선언된 함수, var키워드를 통해 선언된 변수는 window객체와 연결
var myname = 'Wonho'
myname === window.myname
true //myname은 window 객체에 속해짐 //let은 불가