티스토리 뷰

구조

// npm install realine-sync 모듈 다운로드

 

1. 검증 파일 (Validator.mjs)

function isNumber(number) {
  return !isNaN(parseInt(number));
}

function isOperation(operation) {
  let operations = "+-*/=";
  return operations.indexOf(operation) !== -1;
}

//Calculator에서 사용할 수 있도록 export한다.
//외부로 내보내고자 하는 함수 혹은 객체에 export를 붙이면 외부에서 사용 가능
//export 여러 개 가능

export default {
  isNumber,
  isOperation,
};

2. 계산 파일 (Calculator.mjs)

//중괄호가 없으면 이름을 지어줘야하는데 export default시..
import validator from "./Validator.mjs";

let inputDatas = []; // 배열에 저장

function appendData(inputData) {
  // 키보드 내용마다 inpuData로 받아서 배열에 넣음
  inputDatas.push(inputData);
}

function getInputDatasMessage() {
  let message = "";
  // map함수를 통해 배열 하나를 꺼내
  inputDatas.map((value) => (message += value));
  return message;
}

function calculate() {
  let result = parseInt(inputDatas[0]);
  let currentNumber = 0;
  let currentOperation = "";
  let prevOperation = "";

  inputDatas.forEach((value) => {
    if (validator.isNumber(parseInt(value))) {
      currentNumber = parseInt(value);
    } else if (validator.isOperation(value)) {
      currentOperation = value;
    }

    switch (prevOperation) {
      case "+":
        result += currentNumber;
        break;
      case "-":
        result -= currentNumber;
        break;
      case "*":
        result *= currentNumber;
        break;
      case "/":
        result /= currentNumber;
        break;
      default:
        break;
    }
    prevOperation = currentOperation;
    currentOperation = ""; //초기화
  });
  return result;
}

export default {
  appendData,
  getInputDatasMessage,
  calculate,
};

3. 호출 파일 (CalculatorAssist.mjs)

//Calculator 애들을 호출

//배열을 이용한 계산기능을 사용할 것이므로 import
import { question } from "readline-sync";
// export default라 중괄호 없음
import calculator from "./Calculator.mjs";

//반복문을 통한 무한반복
function showPrompt() {
  while (true) {
    let inputData = question("Enter number or operation: ");

    if (inputData !== "=") {
      calculator.appendData(inputData);
      console.log(calculator.getInputDatasMessage()); //함수호출
    } else {
      console.log(
        calculator.getInputDatasMessage() + "=" + calculator.calculate()
      );
      break;
    }
  }
}
showPrompt();
//node --experimental-json-modules src/CalculatorAssist.mjs

 

결과값

 

 

 

강의링크: https://www.youtube.com/watch?v=wiJGoCo6Bpw&list=PLOSNUO27qFbug6LMeH5yNXfQqVqWlUARc&index=7

 

강의링크: https://www.youtube.com/watch?v=WnQ7G6Bn6M8&list=PLOSNUO27qFbug6LMeH5yNXfQqVqWlUARc&index=8 

 

'JavaScript' 카테고리의 다른 글

export와 import 기본  (0) 2022.04.12
Array  (0) 2022.04.11
함수 활용 실습 - 간단한 계산기 application 만들기  (0) 2022.04.11
Functions  (0) 2022.04.11
Data Types, Operators(데이터 타입과 연산자)  (0) 2022.04.11
댓글