advanced 레퍼런스 코드

buttons.addEventListener('click', function (event) {
  // 버튼을 눌렀을 때 작동하는 함수입니다.

  const target = event.target; // 클릭된 HTML 엘리먼트의 정보가 저장되어 있습니다.
  const action = target.classList[0]; // 클릭된 HTML 엘리먼트에 클레스 정보를 가져옵니다.
  const buttonContent = target.textContent; // 클릭된 HTML 엘리먼트의 텍스트 정보를 가져옵니다.
  // ! 위 코드는 수정하지 마세요.

  // ! 여기서부터 Advanced Challenge & Nightmare 과제룰 풀어주세요.
  if (target.matches('button')) {
    if (action === 'number') {
      //! 숫자 버튼을 누른 경우
            // 직전에 숫자가 아닌 다른 버튼을 입력한 경우 (연산자, 계산, display가 0인 경우)
      if (display.textContent === '0' || previousKey === 'operator' || previousKey === 'calculate') {
                // 직전에 방금 클릭한 버튼의 내용을 display에 담아 주기
        display.textContent = buttonContent;
      } else {
        display.textContent = display.textContent + buttonContent; // 위에서 작성한 코드
      }
      previousKey = 'number';
    }
    if (action === 'operator') {
      //! 연산자 버튼을 누른 경우
      firstNum = display.textContent;
      operatorForAdvanced = buttonContent;
      previousKey = 'operator';
    }
    if (action === 'decimal') {
      // Nightmare
    }
    if (action === 'clear') {
      //! AC 버튼을 누른 경우
      firstNum = undefined;
      operatorForAdvanced = undefined;
      previousNum = undefined;
      previousKey = 'clear';
      display.textContent = '0';
    }
    if (action === 'calculate') {
      //! enter 버튼을 누른 경우
      if(firstNum){
          previousNum = display.textContent;
          display.textContent = calculate(firstNum, operatorForAdvanced, display.textContent);
      }
    }
  }
});

레퍼런스 코드

https://github.com/codestates/im-sprint-calculator-reference