☑️javascript - scope/ switch문

유자탱자🍋·2021년 2월 21일
0

1) scope

block

: 중괄호({})로 감싸져 있으며, block 내부에서 변수가 정의되면 오로지 block 내부에서만 사용할 수 있다(지역 변수).

scope

: 함수를 생성할 때, 변수 및 함수 내 정의된 코드들은 그들만의 scope 안에 자리하게 된다. 즉, 다른 함수의 내부나 외부 함수의 코드가 접근할 수 없는 그들만의 구획에 갇혀 있다는 뜻이다.

  • global scope
    : 함수 바깥에 선언된 가장 상위 레벨의 scope는 global scope(전역 scope). global scope 내에 정의된 값들은 어느 코드든 접근이 가능하다.

  • block scope
    : 각각 다른 중괄호 {} 안에서 변수, 함수를 정의하면 중괄호 안에서만 이용 가능하고 각 블록이 독립적으로 실행된다.

[var와 let/const의 차이점]
var로 선언한 변수는 블록 범위를 가지지 않는다

var x = 1;
{
  var x = 2;
}
console.log(x); // 2

반면 let과 const로 선언한 식별자는 블록 범위를 가진다

let x = 1;
{
  let x = 2;
}
console.log(x); // 1 
const c = 1;
{
  const c = 2;
}
console.log(c); // 1, SyntaxError 없음!

global variable

: 전역변수는 함수 외부에서 선언된 변수로, 프로그램 전체에서 접근할 수 있는 변수다.

local variable

: 지역변수는 함수 내부에서 선언된 변수로, 함수가 실행되면 만들어지고 함수가 종료되면 소멸하는 변수다. 함수 외부에서는 접근할 수 없다.

global namespace

  • namespace
    : 구분이 가능하도록 정해놓은 범위나 영역을 의미한다. 이름 그대로, 이름 공간을 선언하여 다른 공간과 구분하도록 하는 것이다.

    : 하나의 전역 객체를 생성한 후, 모든 함수, 변수, 객체들을 그 전역 객체 안에 구현하는 방식

    : 전역 변수의 개수를 줄이고, 같은 이름 충돌을 방지하며, 변수명이 불필요하게 길어짐을 방지한다.

    : 하지만, 각 프로퍼티(변수, 객체 등) 상위 객체명을 계속 붙여야하므로 소스 양은 늘어난다.

  • global namespace
    : global 변수를 선언하면, 해당프로그램의 어디에서나 사용할 수 있는 global namespace를 갖습니다.


scope pollution

: global 변수를 남용할 경우, global 변수는 프로그램이 종료될 때까지 계속 살아있어 변수값이 변하는 경우 트래킹 하기도 어렵고, 변수가 어디서 선언되었는지 찾기 어려워진다.



2) switch (참고)

syntax.

  • 변수 x의 값과 첫 번째 case문의 값 'value1'를 일치 비교한 후, 두 번째 case문의 값 'value2'와 비교합니다. 이런 과정은 계속 이어집니다.
  • case문에서 변수 x의 값과 일치하는 값을 찾으면 해당 case 문의 아래의 코드가 실행됩니다. 이때, break문을 만나거나 switch 문이 끝나면 코드의 실행은 멈춥니다.
  • 값과 일치하는 case문이 없다면, default문 아래의 코드가 실행됩니다(default 문이 있는 경우).

ex.

주의!) case문 안에 break문이 없으면 조건에 부합하는지 여부를 따지지 않고 이어지는 case문을 실행합니다.

0개의 댓글