Scope

Geonil Jang·2021년 7월 27일
0

code-js

목록 보기
3/7
post-thumbnail

Scope란?

유효범위, 변수의 접근성과 생존 기간을 제어합니다.

  • 스코프는 이름이 충돌하는 문제를 덜어주고, 자동으로 메모리를 관리합니다.
const f1 = function(){
	const a = 1; // 함수 스코프
    const b = 2;
    console.log(a + b) // 3
    return a + b
}

let a = 20; // 전역 범위
console.log(b) // error: b is not defined - 전역에서는 함수 내부로 들어 갈 수 없어요

f1() // 3

자바스크립트의 유효 범위

  • 전역 스코프
  • 함수 스코프
  • 블록 스코프(es6)

전역 스코프

스크립트의 어디서든 접근이 가능하기 때문에 사용이 쉽습니다.
타인과 협업, 라이브러리 사용시 충돌이 가능성이 있습니다.

함수 스코프

함수 내부에서 정의된 변수와 매개변수는 함수 외부에서 접근할 수 없으며,
함수 내부에서 정의된 변수라면 함수의 어느 부분에서도 접근할 수 잇습니다.

const fnc = function(){
	val = "hello"
    let a= 1;
    let b= 2;

	const fnc2 = function(){
    	let b = 5;
        let c = 6;
        a = a + b + c; // 1 + 5  + 6
        console.log(a) // 1
    }
    fnc2() // 12
}
fnc();
console.log(val) // "hello" 전역변수 취급됩니다. ... 'use strict'

블록 스코프(es6)

중괄호 안에서만 접근이 가능합니다. 블록 내부에 정의된 변수는 블록의 실행이 끝나면 해제됩니다.

if(true){
	var value = "hello"
}
console.log(value) // "hello"

if(true){
	let value = "world" // let, const 중괄호 안에서만 유효 범위를 갖는다
}
console.log(value) // "hello"

정리

  • 스코프는 변수의 접근성과 생존 기간을 제어합니다.
  • 스코르는 이름이 충돌하는 문제를 덜어주고, 자동으로 메모리를 관리합니다.
  • 자바스크립트에는 전역 스코프, 함수 스코프, 블록 스코프가 존재합니다.
profile
takeaways

0개의 댓글