Section1 Unit6 ๊ฐ๋จํ ์น์ฑ ๋ง๋ค๊ธฐ - ๊ณ์ฐ๊ธฐ ๊ตฌํ (๊ธฐ๋ณธ)
โญ๏ธ ๊ณผ์ 1. ๊ณ์ฐ๊ธฐ ๊ตฌํํ๊ธฐ
Bare Minimum Requirements
โ clear ๋ฒํผ์ ๋๋ ์ ๋, ํ๋ฉด์ 0, +, 0, =, 0 ์์๋ก ๋ณด์ฌ์ผ ํฉ๋๋ค.
โ ์ฒ์ ์ซ์ ๋ฒํผ์ ๋๋ ์ ๋, ์ฒซ ๋ฒ์งธ ํ๋ฉด์ ๋๋ฅธ ์ซ์๊ฐ ๋ณด์ฌ์ผ ํฉ๋๋ค.
โ ์ซ์ ๋ฒํผ๊ณผ ์ฐ์ฐ์ ๋ฒํผ์ ๋๋ ์ ๋, ์ฒซ ๋ฒ์งธ ํ๋ฉด๋ ์ซ์, ๋ ๋ฒ์งธ ํ๋ฉด์๋ ์ฐ์ฐ์๊ฐ ๋ณด์ฌ์ผ ํฉ๋๋ค.
โ ์ซ์ ๋ฒํผ, ์ฐ์ฐ์ ๋ฒํผ, ์ซ์ ๋ฒํผ์ ๋๋ ์ ๋, ํ๋ฉด์ ์ซ์, ์ฐ์ฐ์, ์์์ ์์๋ก ๋ณด์ฌ์ผ ํฉ๋๋ค.
โ ์ซ์ ๋ฒํผ, ์ฐ์ฐ์ ๋ฒํผ, ์ซ์ ๋ฒํผ, ์ํฐ ๋ฒํผ์ ๋๋ ์ ๋, ํ๋ฉด์ ์ซ์, ์ฐ์ฐ์, ์ซ์, =, ์ฐ์ฐ ๊ฒฐ๊ณผ์ ์์๋ก ๋ณด์ฌ์ผ ํฉ๋๋ค.
โ ์ฐ์ฐ ์ script.js์ calculate ํจ์๋ฅผ ํ์ฉํด์ผ ํฉ๋๋ค.
โ clear ๋ฒํผ์ ๋๋ ์ ๋, ํ๋ฉด์ 0, +, 0, =, 0 ์์๋ก ๋ณด์ฌ์ผ ํฉ๋๋ค.
๐ฉ๐ป๐ป script.js
function calculate(n1, operator, n2) {
let result = 0;
// TODO : n1๊ณผ n2๋ฅผ operator์ ๋ฐ๋ผ ๊ณ์ฐํ๋ ํจ์๋ฅผ ๋ง๋์ธ์.
n1 = Number(n1);
n2 = Number(n2);
// n1 = Number(n1.textContent);
// n2 = Number(n2.textContent);
// operator = operator.textContent;
if (operator === "+") {
result = n1 + n2
} else if (operator === "-") {
result = n1 - n2;
} else if (operator === "*") {
result = n1 * n2;
} else if (operator === "/") {
result = n1 / n2;
}
return String(result);
}
buttons.addEventListener('click', function (event) {
const target = event.target;
const action = target.classList[0];
const buttonContent = target.textContent;
if (target.matches('button')) {
// TODO : ๊ณ์ฐ๊ธฐ๊ฐ ์๋ํ ์ ์๋๋ก ์๋ ์ฝ๋๋ฅผ ์์ ํ์ธ์. ์์ฑ๋์ด ์๋ ์กฐ๊ฑด๋ฌธ๊ณผ console.log๋ฅผ ํ์ฉํ์๋ฉด ์ฝ๊ฒ ๋ฌธ์ ๋ฅผ ํ ์ ์์ต๋๋ค.
if (action === 'number') {
if (firstOperend.textContent === "0") {
firstOperend.textContent = buttonContent;
} else {
secondOperend.textContent = buttonContent;
}
}
if (action === 'operator') {
operator.textContent = buttonContent;
}
if (action === 'clear') {
firstOperend.textContent = "0";
operator.textContent = "+";
secondOperend.textContent = "0";
calculatedResult.textContent = "0";
}
if (action === 'calculate') {
let result = calculate(firstOperend.textContent, operator.textContent, secondOperend.textContent);
// let result = calculate(firstOperend, operator, secondOperend);
calculatedResult.textContent = result;
}
}
});
๊ณ์ฐ๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ์ ํ๋๋ฐ, ๊ตฌํ์ ๋๋๋ฐ ํ ์คํธ ์ฝ๋ ํต๊ณผ๋ฅผ ๋ชปํ ๋ถ๋ถ์ด ๊ถ๊ธํด์ ๋ผ์ด๋ธ ์ธ์ ๋ ์ง๋ฌธ์ ํ์๋ค. (ํ ์คํธ ์ฝ๋๋ฅผ ์ฒ์ ๋ด์ ๋๋ฌด ์ ๊ธฐํ๊ณ ์ฌ๋ฐ์๋๋ฐ, ์ฝ์์ค ๋ชฐ๋ผ์ ์ ํต๊ณผ๊ฐ ์๋๋์ง ๊ถ๊ธํ์๋ค.) ๋๋ฌด ๋ช ํํ๊ฒ ๋ต์ ํด์ฃผ์ ์ ๐ ์์์ํ ๊ถ๊ธ์ฆ ํด๊ฒฐ!
Q. calculate ํจ์ ํธ์ถํ ๋ calculate(firstOperend, operator, secondOperend);
์ด๋ ๊ฒ ํ๊ณ , ํจ์ ๋ด๋ถ์ n1 = Number(n1.textContent); n2 = Number(n2.textContent); operator = operator.textContent;
์ด๋ฐ์์ผ๋ก ๋ฃ์ผ๋ฉด ๊ตฌํ์ ๋๋๋ฐ, ํ
์คํธ์ฝ๋ ํต๊ณผ๋ ์๋๋๋ฐ ์ด์
A. ์ด๊ฑด ํจ์๋ฅผ ๋ง๋ค๊ณ ๊ตฌํํ ๋์ ๋ฃฐ๊ฐ์ ๊ฑด๋ฐ, ํจ์ ๋ด๋ถ์์๋ ํจ์ ์ธ๋ถ์ ๊ฒ์ ๊ฑด๋๋ฆฌ์ง ์๋๊ฒ์ ์ ํธํ๋ค. ๋ฐ๋ผ์ ์ ์ด์ ํจ์์ ์ ๋ฌ์ธ์๋ก ๋ถ๋ฌ์ฌ๋ textContent
๋ฅผ ๋ถ์ด๋๊ฑธ ์ ํธํ๊ณ , ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํ
์คํธ์ฝ๋๋ฅผ ๊ทธ๋ฐ์์ผ๋ก ์งฐ๋ค. ์ ์ฝ๋์ฒ๋ผ ํ๋ฉด ์๋๋๊ฑด ์๋์ง๋ง ์ ํธํ๋ ๋ฐฉ์์ ์๋๋ค.
๋ง์นจ Javascript.info ์ฌ์ดํธ์์ ํจ์ ๋ถ๋ถ์ ๋ณด๊ณ ์์๋๋ฐ, ์ด๋ฐ ๋ฌธ๊ตฌ๊ฐ ์์๋ค.
“๊น๋ํ๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ ค๋ฉด ํจ์ ๋ด๋ถ์์ ์ธ๋ถ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ๋์ ์ง์ญ ๋ณ์์ ๋งค๊ฐ๋ณ์๋ฅผ ํ์ฉํ๋ ๊ฒ ์ข์ต๋๋ค. ๊ฐ๋ฐ์๋ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์์ ๊ทธ ๋ณ์๋ฅผ ๊ฐ์ง๊ณ ๋ฐํ ๊ฐ์ ๋ง๋ค์ด ๋ด๋ ํจ์๋ฅผ ๋ ์ฝ๊ฒ ์ดํดํ ์ ์์ต๋๋ค. ๋งค๊ฐ๋ณ์ ์์ด ํจ์ ๋ด๋ถ์์ ์ธ๋ถ ๋ณ์๋ฅผ ์์ ํด ๋ฐํ ๊ฐ์ ๋ง๋ค์ด ๋ด๋ ํจ์๋ ์ฝ๊ฒ ์ดํดํ๊ธฐ ํ๋ญ๋๋ค.”
์ด๊ฒ ๋น์ทํ ๋งฅ๋ฝ์ธ๊ฐ? ํท๊ฐ๋ฆฌ์ง๋ง ์ฌํผ ํจ์ ๋ด๋ถ์์ ์ธ๋ถ์ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๊ฑด ์ง์ํ๋๊ฒ ์ข๋ค๋ ๋ง์ธ๊ฒ ๊ฐ๋ค.
โฌ๏ธ ๊ธฐ๋ณธ ๊ธฐ๋ฅ๋ง ๋ฃ์ด์ ๊ตฌํํ ๊ณ์ฐ๊ธฐ
See the Pen Untitled by sowon (@hello_FAY) on CodePen.
๐ ์ค๋์ ํ๊ณ
์์นจ๋ถํฐ ๊ณ์ฐ๊ธฐ ๋ง๋ค๊ธฐ ๊ณผ์ ๋ก ํ์ดํ๋์ ํ๋ค. ์ง๊ธ๊น์ง HTML, CSS, JS ๊ธฐ์ด๋ ์ด๋ฏธ ์์๋ ๋ด์ฉ์ ํ์ต ์๋ฃ์์ ๊ธ๋ก ์ฝ์ผ๋ ค๋ ์ดํด๋ ๋นจ๋๊ณ , ๋ณ๋ก ์ด๋ ต๋ค๊ณ ์๊ฐ๋์ง ์์๋๋ฐ ์ด๋ฒ ๊ณ์ฐ๊ธฐ ๊ณผ์ ๋ ์ฒ์์๋ ๊ธ๋ก๋ง ๋ฌธ์ ๋ฅผ ๋ณด๋ ค๋ ๋๋ฌด ํท๊ฐ๋ ค์ ์ง๋๊ฐ ๋๊ฐ์ง ์์๋ค. ๊ทธ๋๋ ์ง๊ธ๊น์ง ์๋ฐ์คํฌ๋ฆฝํธ ๊ณต๋ถ๋ฅผ ์ด์ฌํ ํ๋ค๊ณ ์๊ฐํ๋๋ฐ, ๊ฐ๋จํ ๋ฌธ์ ๋ ๋งํ๋ฒ๋ฆฌ๋๊ฒ ๋ต๋ตํ๊ธฐ๋ ํ๊ณ ์ค๊ธฐ๋ ์๊ฒผ๋ ๊ฒ ๊ฐ๋ค. ๊ธ์ ๋ช ๋ฒ์ด๋ ์ฝ๊ณ ๋์์ผ ๋ฌด์์ ํ๋ผ๋์ง ์ดํด๋ฅผ ํ๊ณ , ์ฒ์ ์ดํด๋ฅผ ํ๊ณ ๋๋ ์ ๊ธฐํ๊ฒ๋ ๋ฌธ์ ๋ฅผ ํฐ ์ด๋ ค์ ์์ด ํ ์ ์์๋ ๊ฒ ๊ฐ๋ค. Bare Minimum Requirements๋ฅผ ์๋ฃํ๊ณ ์ข ๋ User flow์ ๋ง๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๊ณผ์ 2๋ฒ๋ ์ฌ๋ฏธ์๊ฒ ์๋ฃํ๋ค. ์์ง optional ๊ณผ์ ์ธ nightmare๋ ์ํ๋๋ฐ, ์ฃผ๋ง์ ๊ณต๋ถํ๋ฉด์ ํด๋ด์ผ๊ฒ ๋ค.
์, ๊ทธ๋ฆฌ๊ณ ๊ณ์ฐ๊ธฐ ๋ง๋ค๊ธฐ ๊ณผ์ ๋ฅผ ํ๋ฉฐ ํ ์คํธ์ฝ๋๋ ์ฒ์ ์ ํ๋๋ฐ, ๊ต์ฅํ ์ฌ๋ฐ๊ณ ์ ์ ํ๋ค. ๐
์ค๋์ ํ์๋ณด๋ค ์๊ฐ์ด ๋ ๋นจ๋ฆฌ๊ฐ๋ ๊ฒ ๊ฐ์์ ๋๋๋ค. ๊ธ์์ผ ์์ ์ด ๋๋๊ณ ๋ฒ์จ ์ฃผ๋ง์ด๋ผ๋. ๋ฒ์จ 2์ฃผ๊ฐ ์ง๋ฌ๋ค. 2์ฃผ๋ง์ HTML, CSS๋ฅผ ํจ์คํ๊ณ JS๊น์ง ์๋ค๋.. ์์ฒญ๋ ์ปค๋ฆฌํ๋ผ์ด๋ค…ใ ใ
'Frontend Dev > ๐ฅ ์ฝ๋์คํ ์ด์ธ FE ๋ถํธ์บ ํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Section1 Unit8 JavaScript ๋ฐฐ์ด (0) | 2023.04.25 |
---|---|
Section1 Unit7 Linux, Git ๊ธฐ์ด (0) | 2023.04.24 |
Section1 Unit5 JavaScript ๊ธฐ์ด - ํจ์ (0) | 2023.04.20 |
Section1 Unit5 JavaScript ๊ธฐ์ด - ์กฐ๊ฑด๋ฌธ & ๋ฐ๋ณต๋ฌธ (0) | 2023.04.19 |
Section1 Unit5 JavaScript ๊ธฐ์ด - ํ์ & ๋ณ์ (0) | 2023.04.18 |