-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
질문 드립니다.
21.05.29 20:06 작성 조회수 118
1
안녕하세요, 강의 듣다가 저 혼자 도움 없이 코드를 작성해보았는데 작동은 잘 되고 오류도 없다고는 뜨는데 한번 봐주실 수 있을까요?
저는 main 함수에 최대한의 변수를 선언하려고 했어요. 근데 각 함수마다 변수를 안데려온 것도 있는데 (calculate 함수를 예로 들면 result, num2만 다시 선언하고 op를 다시 선언 안해줬어요. 뭔가 op는 이미 getOperator 함수에서 (일시적으로) 고정된 변수 느낌이라 다른 함수에서 불러올 때 선언 안해줬거든요. 전부 다 선언해주는게 맞나요? 작동은 잘 돼서 헷갈리네요
강의 항상 잘 듣고 있습니다 ~
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>내가 만든 함수를 이용한 사칙연산 구현</h1>
<div id="out">결과값과 식은 여기에</div>
<script>
//첫 번째 변수 선언
function getFirstValue() {
num1 = Number(prompt("1번 째 숫자를 입력해주세요."));
return num1;
};
//연산자 선언
function getOperator() {
op = prompt("연산자를 입력해주세요.");
return op;
}
//n 번째 변수 선언
function getSecondValue(num2, n) {
num2 = Number(prompt(n + "번 째 숫자를 입력해주세요."));
return num2;
}
// 계산
function calculate(result, num2) {
if (op === "+") {
result += num2;
} else if (op === "-") {
result -= num2;
} else if (op === "*") {
result *= num2;
} else if (op === "/") {
result /= num2;
} else {
result = "연산자 오류";
}
return result;
}
// 출력
function print(eq, result) {
output = document.getElementById("out");
return out.innerHTML = "<h3>입력한 식 : " + eq + "<br> 계산 결과 : " + result + "</h3>";
}
// 메인함수
function main() {
var num1 = getFirstValue();
var result = num1;
var n = 2;
var str = "";
str = num1;
var eq;
while(true) {
var op = getOperator();
if (op === "q") { break; }
var num2 = getSecondValue(num2, n);
str += op + num2;
eq = str;
result = calculate(result, num2);
n++
}
var output = print(eq, result);
}
main();
</script>
</body>
</html>
답변을 작성해보세요.
0
호눅스
지식공유자2021.06.01
안녕하세요? 답변이 늦어서 죄송합니다.
일단은 정상적으로 동작하면 큰 문제가 되지 않는데요. 이후에 차차 더 좋은 코드를 짜는 방법을 학습하시면 됩니다.
그리고 가능하면 op도 매개변수로 사용해 주는 것이 좋습니다. 나중에 배우겠지만, 전역변수를 사용하면 유지보수에 좋지 않기때문에 가능하면 지역변수, 매개변수를 적절하게 사용하는 것을 권합니다.
답변 1