하루5분코딩"Scope"

HwangSoonhwan·2020년 9월 15일
0

하루 5분 코딩개념

목록 보기
10/11

## Scope = 변수 접근 규칙에 따른 유효 범위

- 잘 작동하지 않는 코드를 파악하고 코드를 잘 작성하기 위해!

Rule 1 : Local Scope vs. Global Scope

  • 변수 firstName에 접근할 수 있는 범위가 존재한다.
  • Local Scope 안쪽에서 선언된 변수는 밖에서 사용할 수 없다.
  • 안쪽 Scope 에서 바깥 변수/함수를 접근하는 것은 가능
  • 바깥쪽 Scope 에서 안쪽 변수/함수를 접근하는 것은 불가능
    ✓ Scope는 중첩이 가능하다(함수안에 함수를 넣을수 있다.)
    ✓Global Scope 는 최상단의 Scope로, 전역 변수는 어디서든 접근이 가능하다.
    ✓지역 변수는 함수 내에서 전역 변수보다 더 높은 우선순위를 가진다.

Rule 2 : Function Scope vs. Block Scope

- Block :중괄호로 시작하고, 끝나는 단위

✓중괄호 범위에서 벗어나면 변수를 사용할수 없게된다.

✓✓✓ var 키워드 vs let 키워드

  • JabaScript 는 기본적으로, 함수단위로 자신만의 Scope를 가집니다 → var키워드(old way)
  • 그러나, Block 단위로 Scope를 구분했을 때에 예측하기 쉬운 코드를 작성할 수 있다.→let 키워드

✓✓✓const :값이 변하지 않는 변수, 즉 상수를 정의할 때 사용하는 키워드

  • let 키워드와 동일하게 Block Scope를 따른다.
  • 값을 재정의하려고 하면 TypeError를 냅니다.

Rule 3 : 전역 변수와 window 객체

-Window : 전역 범위를 대표하는 객체

  • Global Scope에서 선언된 함수, 그리고 var 키워드를 이용해 선언된 변수는 window 객체와 연결

✓ 전역 범위에 너무 많은 변수를 선언하지 않도록 한다!

Rule 3 : 선언 없이 초기화된 전역 변수

🚫 절대로, 선언 키워드 없이 변수를 초기화하지 마세요!

  • 여기서 age는 window.age 랑 같은 값이 된다. 즉 전역변수로 취급이된다.(age===window.age) 그래서 scope 밖에서 사용할수 있다.
  • 이런것을 방지하고자 맨앞에 'use strict'를 사용하여 문법적으로 실수할 수 있는 부분들을 에러로 판단해준다.
profile
👨‍🍳요리사의 "쿠킹" 스토리가 아닌 "코딩" 스토리💻

0개의 댓글