20.12.02 TIL(Scope)

_kim Hodu·2020년 12월 2일
0
post-thumbnail

20.12.02 SCOPE

20.12.02

  • JS에서 SCOPE의 의미를 알기
    Local scope범위에서 선언된 함수는 밖에서 사용될수없음

  • JS는 함수 선언되는(lexical) 동시에 자신만의 Scope(범위를 가짐)

  • 바깥에 선언된 함수는 내부에 쓸수있지만 내부에있는함수는 외부에서 쓸수없음
  • Scope는 중첩가능 (함수안에 함수가능)
  • 전역변수(Global 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에 도달할수있음

값이 변하지 않는 변수, 상수를 정의할떄 사용하는 Const 키워드

Let키워드와 동일한 Block Scope를 따른다

값을 재정의 하면 TypeError가 나온다

Let , const / var

Block scope / Function Scope
값 재정의 가능 / 불가능 /재정의 가능
재선언 둘다(let,const) 불가능 / 가능 (문제가 생길수있음)(아무런 에러가 안나서 문제가됨)

전역범위를 대표하는 객체 window

전역변수에서 선언된 함수, var키워드를 통해 선언된 변수는 window객체와 연결

var myname = 'Wonho'
myname === window.myname
true //myname은 window 객체에 속해짐 //let은 불가

profile
개발자를 향해

0개의 댓글