15. 주석, 에러처리, 모듈

연우·2023년 1월 21일
0

드림코딩

목록 보기
12/15
post-thumbnail

주석 Comments

  • // 한줄 짜리 주석을 작성할 떄 씀
  • // TODO(엘리): 해야할 일을 작성
  • /** */ 여러줄 주석
  • 주석은 코드 자체를 설명하는 것이 아니라,
    왜(WHY)와 어떻게(HOW)를 설명하는것이 좋음
    (단, 정말 필요한 경우에만)
// 외부에서 많이 쓰이는 함수 API인 경우 JSDoc을 사용하면 좋음
/**
 * 주어진 두 인자를 더한 값을 반환함
 * @param {*} a 숫자 1
 * @param {*} b 숫자 2
 * @returns a와 b를 더한값
 */
function add(a, b) {
  return a + b;
}
[].map;

에러 처리

  • try catch finally
function readFile(path) {
  //   throw new Error('파일 경로를 찾을 수 없음');
  return '파일의내용';
}

function processFile(path) {
  let content;
  try {
    content = readFile(path); //시도해보고
  } catch (error) { // 에러가 발생한다면
    console.log(error);
    content = '기본내용';
  } finally { 
    console.log('성공하든 실패하든 마지막으로 리소스를 정리할 수 있음!');
  }
  const result = 'hi ' + content;
  return result;
}

const result = processFile('경로');
console.log(result);

에러 버블링

  • Bubbling up, Propagating
  • 에러를 처리하기 적합한 곳에서 에러를 처리
function a() {
  throw new Error('error!');
}

function b() {
  try {
    a();
  } catch (error) {
    console.log('생각해보니깐 이 에러는 내가 핸들링 할 수 없을 것 같군!');
    throw error;
  }
}

function c() {
  b();
}

try {
  c();
} catch (error) {
  console.log('Catched!');
}
console.log('done!');

모듈 Module

  • 개발하는 애플리케이션의 크기가 커지면 언젠간 파일을 여러 개로 분리해야 하는 시점이 온다.
  • 이때 분리된 파일 각각을 '모듈(module)'이라고 한다.
  • 모듈은 대개 클래스 하나 혹은 특정한 목적을 가진 복수의 함수로 구성된 라이브러리 하나로 구성된다.
  • 모듈은 자신만의 스코프가 있습니다. 따라서 모듈 내부에서 정의한 변수나 함수는 다른 스크립트에서 접근할 수 없다.
  • 모듈에 특수한 지시자 exportimport를 적용하면 다른 모듈을 불러와 불러온 모듈에 있는 함수를 호출하는 것과 같은 기능 공유가 가능하다.

export

  • 변수나 함수 앞에 붙이면 외부 모듈에서 해당 변수나 함수에 접근할 수 있다(모듈 내보내기)
// 📁 sayHi.js
export function sayHi(user) {
  alert(`Hello, ${user}!`);
}

import

  • 사용하면 외부 모듈의 기능을 가져올 수 있습니다(모듈 가져오기)
// 📁 main.js
import {sayHi} from './sayHi.js';

alert(sayHi); // 함수
sayHi('John'); // Hello, John!
  • 브라우저에서 import/export 지시자를 사용하려면 <script type="module"> 같은 속성이 필요합니다.

모듈의 핵심 기능

1. 엄격 모드로 실행됨

  • 모듈은 항상 엄격 모드(use strict)로 실행됩니다. 선언되지 않은 변수에 값을 할당하는 등의 코드는 에러를 발생시킵니다.

2. 모듈 레벨 스코프

  • 모듈은 자신만의 스코프가 있습니다. 따라서 모듈 내부에서 정의한 변수나 함수는 다른 스크립트에서 접근할 수 없습니다.

3. 단 한 번만 평가됨

  • 동일한 모듈이 여러 곳에서 사용되더라도 모듈은 최초 호출 시 단 한 번만 실행됩니다. 실행 후 결과는 이 모듈을 가져가려는 모든 모듈에 내보내 집니다.

0개의 댓글