Js/Node 핵심 개념 Scope(스코프)

wanni kim·2021년 4월 22일
0

Scope

변수의 유효범위

scope의 종류와 각 선언 키워드(let, const, var)

Scope의 주요 규칙

  • 중첩 규칙
  • block scope와 function scope
  • 전역 스코프와 지역 스코프
  • 전역 변수와 지역 변수간의 우선 순위
  • let, const, var 의 차이
  • 전역 객체(window)의 이해
  • 함수로 예를들면 함수 안에서 선언한 변수는 함수의 내부변수로 scope는 함수 내부에 한정되어 적용된다. 함수 밖에서는 함수의 내부변수를 사용할 수 없다.
    반대로, 함수의 밖에서 선언된 변수는 전역변수로서, 함수의 내부에서도 언제든지 변수를 호출하여 사용할 수 있다.
    이것이 변수 접근 규칙에 따른 유효 범위이다.!

    가장 바깥쪽으 스코프는 전역 스코프(global scope)라고 부른다. 반대로는 지역(local)스코프가 있다.

    글로벌 스코프에서 선언된 변수는 지역 스코프에서 사용이 가능하지만, 지역변수가 글로벌 스코프에서 선언된 변수보다 항상 더 높은 우선순위를 가진다.

    이렇게 함수안에서 전역변수의 값을 재 할당하면, 전역변수의 값도 변경된다.
    하지만, 함수안에서 새로운 지역변수를 선언하는데 전역변수와 변수명이 같아도 지역변수가 더 우선시 되기때문에 함수안의 console.log(name)에서는 박해커가 항상 출력이 된다.

    Scope의 종류와 let, const, var에 대해서~

    Scope의 종류는 두가지가 있다.

    블록 스코프(block scope) : { ~ 범위 ~ }

    함수 스코프(function scope) : function(~) { ~ 범위 ~ } 함수 선언식 및 함수 표현식 둘다에 적용된다.

    하지만 유의해야 하는 점이 있다.
    화살표 함수는 블록스코프로 취급된다.
    함수와 블록 스코프는 논리적인 구분 외에도 코드를 작성할 때 기억해야 할 다른 점이 몇 가지 존재하기 때문에, 알아두면 좋다.

    var (변수 재선언 불가능, 변수 재할당 가능) 함수 스코프만 따름.

    이렇게 for문의 조건문에 var을 썻더니 var 키워드는 for문이 만든 블록 스코프를 무시하고 블록 밖에서도 변수 i에 접근을 한다.

    let (변수 재선언 가능)

    또 var 키워드는 변수를 재선언할때에도 let키워드에 비해 안전하지 못하다.
    var키워드는 이러한 실수를 막아주지 못한다.

    const 키워드 (constant:상수)

    (변수 재선언 불가능, 변수 재할당 불가능)

    const키워드는 어떨까??
    const는 값이 변하지 않는 상수를 정의할 때 쓰인다. (재할당이 불가능하다.)
    let과 동일하게 블록 스코프를 따른다.
    값을 변경할 일이 없다면 const키워드를 사용해서 보다 안전한 프로그램을 만들 수 있습니다.

    profile
    Move for myself not for the others

    0개의 댓글