JS remind.여섯번째.Scope

@glassestae·2020년 2월 27일
0

JS remind.

목록 보기
6/6

Scope 란

자바스크립트에 스코프란 어떤 변수들에 접근할 수 있는 범위를 정의한다.
일반적으로 스코프엔 두가지 종류가 있다.

전역 스코프 / 로컬 스코프

Global Scope 전역 스코프

변수가 함수 바깥이나 {}바깥에서 선언되었다면 전역 스코프에 정의한다.
전역 변수로 선언된다면 코드 모든 곳에서 변수를 사용 가능하다.
심지어 함수에서도 가능하다 .

const hello = ‘Hello Marcus’
function marcusHello () {
  console.log(hello)
}
console.log(hello) // ‘Hello Marcus!’
sayHello() // ‘Hello Marcus!’

그러나 위와 같이 전역 스코프를 이용하여 변수를 선언하는 것은 좋지 않다.
왜냐하면, 두 개 이상의 변수의 이름이 충돌하는 경우가 생길수 있다.

Local Scope 지역 스코프

지역 스코프는 코드에서 특정 부분에서만 사용이 가능한 변수
JS에서는 크게 두 가지의 지역 스코프가 존재한다.
함수 스코프와 블록 스코프

Function Scope

만약 함수 내부에서 변수를 선언한다면
그 변수는 함수 내부에서만 사용이 가능.

Block Scope

블록 스코프는 중괄호{} 내부에서 const 혹은 let 으로 변수를 선언하면
그 변수들은 중괄호 블록 내에서만 사용이 가능

var vs let

var = 함수 단위로 자신만의 스코프를 가진다 (함수 스코프)
let = 블록 단위로 자신만의 스코프를 가진다.예측하기 쉬운 코드를 작성 가능(블록 스코프)

const

값이 변하지 않는 변수, 즉 상수를 정의할 때 사용하는 키워드로
let 키워드와 동일하게 블록 스코프를 따른다.
값을 재정의 할수 없다.

변수 선언 키워드 정리

var = 함수 스코프,변수 재선언 가능,변수 재할당 가능

var a = 0;
a //0
var a = 1;
a //1
a  = 2;
a //2

let = 블록 스코프,변수 재선언 불가능,변수 재할당 가능

let b =  0;
b // 0;
let b = 1; // SyntaxError

b = 2
b //2

const = 블록 스코프,변수 재선언 불가능,변수 재할당 불가능

const c = 0;
c //0
const c = 1; //SyntaxError
c = 2 //Assignment to constant variable. 

전역 변수와 window 객체

글로벌 스코프에서 선언된 함수,var 키워드를 이용해 선언된 변수는 window 객체와 연결.
전역 범위에 너무 많은 변수를 선언하지 않도록 주의 할것

profile
프론트엔드 디벨로퍼 지망 :D

0개의 댓글