▶ JS 연습문제 4 - 간이 계산기 ver.4
<h1>간이 계산기 만들기</h1>
첫 번째 값 : <input type="text" id="num1"><br>
두 번째 값 : <input type="text" id="num2"><br>
<!--
** 함수 호출 시 매개변수 this **
-> 이벤트가 발생한 요소 자체를 의미
(여기에서는 클릭된 연산자 버튼)
-->
<button onclick="calculate(this)">+</button>
<button onclick="calculate(this)">-</button>
<button onclick="calculate(this)">*</button>
<button onclick="calculate(this)">/</button>
<button onclick="calculate(this)">%</button>
<br><br>
계산 결과 : <span id="result"></span>
<script>
function calculate(btn){
// btn 에는 this(클릭된 버튼 요소)가 전달되어짐
const op = btn.innerText; // 버튼의 내용(+,-,*,/,%)를 얻어옴
// input에 입력된 값을 얻어와서 바로 number 타입으로 변환
const num1 = Number(document.getElementById('num1').value);
const num2 = Number(document.getElementById('num2').value);
// eval("코드 형식 문자열")
// -> 작성된 문자열을 JS 코드로 해석
// -> 속도 문제 및 보안 이슈로 사용하지 않는 것을 권장
// span 태그에 결과 출력
// document.getElementById('result').innerHTML = eval(num1 + op + num2);
document.getElementById('result').innerHTML = new Function("return " + num1 + op + num2)();
}
/* new Function("return " + num1 + op + num2):
- new Function은 동적으로 새로운 함수를 생성하는 방법
- "return " + num1 + op + num2는 함수의 본문을 문자열로 작성
- 예를 들어, num1이 5이고 op가 +이며 num2가 3이라면, 이 문자열은 "return 5 + 3"이 됨
이 문자열을 함수로 변환하여 새로운 함수 객체를 생성 */
/* ():
생성된 함수 객체를 즉시 호출
예를 들어, new Function("return 5 + 3")()는 8을 반환함*/
</script>
See the Pen 24-12-25 js review-pr4 by Namu (@Namu-the-sans) on CodePen.
'HTML, CSS, JavaScript > JavaScript 연습문제' 카테고리의 다른 글
JS 연습문제 6 - 색깔 변경_표준 이벤트 모델 적용 ver. (0) | 2024.12.25 |
---|---|
JS 연습문제 5 - 색깔 변경 (0) | 2024.12.25 |
JS 연습문제 3 - 간이 계산기 ver.3 (0) | 2024.12.25 |
JS 연습문제 2 - 간이 계산기 ver.2 (0) | 2024.12.25 |
JS 연습문제 1 - 간이 계산기 ver.1 (0) | 2024.12.18 |