ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Javascript] 블록문과 스코프
    Javascript 2024. 4. 1. 10:16

    블록문과 스코프

     

    블록문 : { }

     

    스코프 : 블록안에 선언된 변수와 상수를 밖에서 사용불가

    변수가 영향을 미치는 범위(접근 할 수 있는 범위) , 혹은 변수의 유효범위에 대한 규칙

    식별자가 어디에서 선언 되었는지에 따른 자신의 유효한 범위를 갖는다.

    - 함수가 생성되면 무조건 스코프가 생성된다

    - 블록 안쪽에 변수나 상수가 새로 선언되면 바깥 것을 덮어 씀

    const xx = 0;
    let yy = 'Hello!';
    console.log(xx, yy);
    
    {
      const xx = 1; // 💡 블록 안에서는 바깥의 const 재선언 가능
      let yy = '안녕하세요~';
    
      console.log(xx, yy);
      // ⚠️ const, let을 빼먹으면 재선언이 아니라 바깥것의 값을(변수면) 바꿈!
    }
    
    console.log(xx, yy);

     

    - 스코프 체인 : 후입선출 나중에 온 것이 먼저 나감,

    • 블럭 안에 해당 변수/상수가 없으면 바깥쪽으로 찾아 나감 - 체이닝

    전역 global 변수/상수

    • 데이터 data 영역에 위치
    • 코드 어느 곳에서든 접근 가능 - 블록 내 동명의 변수나 상수에 덮어씌워지지 않는 이상
    • 프로그램 종료시 소멸
    • 전역변수 사용은 최소화할 것
    • 어디서든 참조 할 수 있는 전역 스코프를 갖는 변수

    지역 local 변수/상수

    • 스택 영역에 위치
    • 해당 블록 안에서만 접근 가능
    • 블록 실행 종료시 소멸
    • 변수나 상수는 가능한 사용할 블록 내에서 선언 - 메모리 절약
    • 함수 자신과 하위 함수에서만 참조 가능
    • 함수 내에서 선언된 매개변수와 변수는 함수 외부에서는 유효하지 않음
    • 지역변수는 지역스코프를 갖는 변수

    if / else

    function evalNum () {
      const x = 21;
    
      if (x % 2) {
        console.log('홀수입니다.');
        return;
      }
    
      if (x % 4) {
        console.log('짝수입니다.');
        return;
      }
    
      console.log('4의 배수입니다.');
    }
    
    evalNum();
    console.log('블록문 바깥');

     

    switch

    // 💡 참고: 객체를 사용한 방법
    const direction = 'north'
    
    const directionKor = {
      north: '북',
      south: '남',
      east: '동',
      west: '서'
    }[direction] ?? '무효'
    
    console.log(directionKor);

     

    for 루프 : 괄호 안의 3개의 식에 따른 반복수행

    for(초기값; 종료여부; 중감값)

    for(let i = 0; i<10; i++){
    	console.log(i);
    }
    • 변수의 선언 및 할당
    • 종료조건. 부재 시 항상 참
    • 참일 시 블록 안의 코드 이후 실행문

    객체와 배열의 for문

    - 객체: for (키 이름 in 객체명) - 객체의 키들을 순서대로 반환

    const lunch = {
      name: '라면',
      taste: '매운맛',
      kilocalories: 500,
      cold: false
    }
    
    for (const key in lunch) { // 💡 변할 것이 아니므로 const 사용
      console.log(key, ':', lunch[key])
    }
    
    for ... of문의 장점 //반복 가능한 객체(Array, Map, Set, String, TypedArray, arguments 객체 등 포함)에 대해 사용
    const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    
    // 변수(i)를 사용하므로 위험요소 존재
    for (let i = 0; i < numbers.length; i++) {
      // 이곳에 i를 변경하는 코드가 들어간다면...
      console.log(numbers[i]);
    }
    
    // 변수를 사용하지 않음으로 보다 안전
    for (const num of numbers) {
      console.log(num);
    }

    - continue : 한루프를 건너뜀

    - break ; 블록을 종료하고 빠져나옴

     

    for...in 문과 for...of 문의 차이점

    출처 : 코딩에브리바디

     

    while과 do while

    - while - 조건이 참인 동안 반복수행

    무한루프 : break문으로 무한반복 탈출 가능

    - do while - 일단 수행하고 조건을 평가

Designed by Tistory.