Bibi's DevLog ๐ค๐
[์ธํ๋ฐ] Javascript์ ๋ฌธ - ํจ์๋ฅผ ํ์ฉํด ๊ตฌ๊ตฌ๋จ ๋ค์ ๊ตฌํ(์ค์ต, ํด์ค) ๋ณธ๋ฌธ
[์ธํ๋ฐ] Javascript์ ๋ฌธ - ํจ์๋ฅผ ํ์ฉํด ๊ตฌ๊ตฌ๋จ ๋ค์ ๊ตฌํ(์ค์ต, ํด์ค)
๋น๋น bibi 2020. 10. 19. 00:12* ์ด ๊ธ์ ์ธํ๋ฐ์์ ์ ๊ณตํ๋ ํธ๋ ์ค๋์ ์ ๋ฃ ๊ฐ์ '์ฝ๊ณ ์์ฐ์ค๋ฝ๊ฒ ๋ฐฐ์๋ณด๋ Javascript ์ ๋ฌธ - ์ฝ๋์ค์ฟผ๋ ๋ง์คํฐ์ฆ ์ฝ์ค ๋ ๋ฒจ1'๋ฅผ ๋ฃ๊ณ ๊ณต๋ถํ๋ฉฐ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ๊ฐ์ ๋ด์ฉ์ ๋ํด, ์ ๊ฐ ํ๊ธฐํ๊ณ ๊ตฌ๊ธ๋งํ ๋ด์ฉ์ด ์ ๋ฆฌ๋์ด ์์ต๋๋ค. ์ด๋ณด์ธ ์ ๊ฐ ์ดํดํ ๋๋ก ์ ๋ฆฌํ๊ธฐ ๋๋ฌธ์, ๋ถ์ ํํ ๋ด์ฉ์ด ์์ ์ ์์์ ๊ฐ์ํด ์ฃผ์๊ธธ ๋ฐ๋๋๋ค. ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ธ์ด๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ค๋ ์ธํ๋ฐ ์ธก ๋ต๋ณ์ ๋ฐ์ ์ ์ด ์์ผ๋(https://bibi6666667.tistory.com/37), ์ ์๊ถ์ ๋ฌธ์ ๊ฐ ๋๋ค๋ฉด ๋ณดํธ ๋ชจ๋(๋น๊ณต๊ฐ)๋ก ์ ํํ๊ฒ ์ต๋๋ค.
ํ์ต ๋ชฉํ
- ํจ์๋ฅผ ํ์ฉํด ๊ตฌ๊ตฌ๋จ์ ๊ตฌํํ๋ ๊ฒฝํ์ ํ๋ค.
์๊ตฌ์ฌํญ
- ํจ์๋ฅผ ํ์ฉํด ๋ฐ๋ณต์ ์ผ๋ก ๋ฐ์ํ๋ ์ฝ๋๋ฅผ ์ค์ธ๋ค.
= ํจ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ด์ . ๋ฐ๋ณต๋๋ ์ฝ๋ ์ค์ด๊ธฐ ์ํด! - ํจ์ = function = ๊ธฐ๋ฅ.
์ฆ ์ด๋ค ํ๋ก๊ทธ๋จ์ "๊ธฐ๋ฅ" ๋จ์๋ง๋ค ํจ์๋ฅผ ๋ง๋ค๋ฉด ๋๋ค. - ๊ณต๋ถ๋ฅผ ์ํด ๋ฉ์ธmainํจ์๋ฅผ ์ฌ์ฉํด ๋ณธ๋ค.
๋ฉ์ธํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ญ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ง์ ์ ์์.
(๊ณต๋ถํ ๊ฒ: ๋ณ์, ์ค์ฝํ?)
๊ฒฐ๊ณผ๋ฌผ
- ๊ฐ์ ๋ ๊ตฌ๊ตฌ๋จ ํ๋ก๊ทธ๋จ
- github ์ ์ฅ์
ํํธ
- ๊ตฌ๊ตฌ๋จ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์ด์ ๋ด๋ ๋ก์ง์ ์๋ก์ด ํจ์๋ก ๋ถ๋ฆฌํ๋ค.
- ๋ฐฐ์ด์ ๋ด์ ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ์ถ๋ ฅํ๋ ๋ก์ง์ ์๋ก์ด ํจ์๋ก ๋ถ๋ฆฌํ๋ค.
function calculrate(num) {
var results = [];
for (var i = 1; i < results.length; i++) {
// ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์ด์ ์ ์ฅ
}
return results
}
function print(results) {
// ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ํ๋ฉด์ ์ถ๋ ฅ
}
function main() {
// ๋๋จธ์ง ์ฝ๋๋ค์ ์ฌ๊ธฐ์
}
main();
ํ์ต ์ฐธ๊ณ ์๋ฃ
ํจ์
https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/%ED%95%A8%EC%88%98
์ํ์ฝ๋ฉ WEB2 Javascript - 25.ํจ์
๋ด๊ฐ ์ง ์ฝ๋
(๊ตฌ๊ตฌ๋จ_๋ฐฐ์ด ์ ๋ต ์ฝ๋๋ฅผ ํ์ฉ)
(์ถ๋ ฅ ๊ฒฐ๊ณผ๋ gugudan_re_๋ฐฐ์ด ์ ๋ต ๊ณผ ๊ฐ๋ค)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>๊ตฌ๊ตฌ๋จ ์ ์ฒด ์ถ๋ ฅ</h1>
<script>
function main() {
var results = [];
for (var n = 2; n <= 9; n++) {
calculate(n, results);
print(n, results);
}
}
function calculate(n, results) {
for (var i = 1; i <= 9; i++) {
results[i] = n * 1;
}
return results;
}
function print(n, results) {
document.write("<h2>" + n + "๋จ</h2>")
for (var i = 1; i <= 9; i++) {
var str = "";
str += n;
str += " ๊ณฑํ๊ธฐ ";
str += i;
str += " ๋ "
str += results[i];
str += "<br>";
document.write(str)
}
}
main();
</script>
</body>
</html>
ํด์ค(์ฝ๋ฉ - ํจ์๋ฅผ ํตํ ๊ตฌ๊ตฌ๋จ)
- ํจ์๋ฅผ ์ ์ํ ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก
function functionName(parameter) {
// ์ด ํจ์๊ฐ ์ํํ๋ ๊ธฐ๋ฅ(์ฒ๋ฆฌ).
console.log("hello" + some);
return "์๋
" + some ;
}
์ ๊ฐ์ ํํ๋ฅผ ๊ฐ์ง๋ค.
- ํจ์๋ช functionName (ํ์). ํจ์๋ช ๋ง์ผ๋ก ํจ์์ ๊ธฐ๋ฅ์ ํ์ ํ ์ ์๋๋ก ์๋ฏธ์๊ฒ ์ง๋ ๊ฒ์ด ์ข๋ค.
- ๋งค๊ฐ๋ณ์ parameter ( ์ผ๋ฐ์ ์ผ๋ก 0๊ฐ ์ด์. ์์ ์๋ ์๊ณ , ์์ ์๋ ์๋ค )
- ๋ฆฌํด๊ฐ return ( 0๊ฐ ๋๋ 1๊ฐ. ์์ ์๋ ์๊ณ , ์์ ์๋ ์๋ค )
โป ๋งค๊ฐ๋ณ์parameter : wayhome25.github.io/etc/2017/12/31/parameter-argument/์ฐธ๊ณ (๋งค๊ฐ๋ณ์parameter์ ์ ๋ฌ์ธ์argument์ ์ฐจ์ด)
- ํจ์๋ ,,
- ์ฝ๋์ ์ค๋ณต์ ํผํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
- ๊ฐ๋ ์ฑ์ ๋์ด๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
- ํจ์๋ฅผ ์งค ๋๋...
- ํ๋์ ํจ์๊ฐ ํ ๊ฐ์ง ์ผ๋ง ํ๋๋ก ํ ๊ฒ
- ํจ์ ํ๋๊ฐ ์ฝ๋ 10์ค ์ด์์ด ๋์ง ์๋๋ก ํ ๊ฒ
- ํจ์๋ฅผ '์ ์'๋ง ํ๊ณ 'ํธ์ถcall'ํ์ง ์์ผ๋ฉด ๋น์ฐํ! ์๋ํ์ง ์๋๋ค. ํจ์๋ช (); ๋ก ์คํํด ์ฃผ์ด์ผ ํ๋ค.
ํด์ค ์์์ ์ ๋ต์ฝ๋
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>๊ตฌ๊ตฌ๋จ : ํจ์ ์ฌ์ฉํด ๋ณด๊ธฐ</h1>
<script>
// gugudan ํจ์ : x๋จ์ ๊ณ์ฐํ๋ ํจ์
function gugudan(x) {
var ret = []; // return๋ ๋ฐฐ์ด์ ๋ง๋ฆ
for (var i = 1; i <= 9; i++) {
ret[i] = x * i;
}
return ret;
}
// printResult ํจ์ : x๋จ์ ํ๋ฉด์ ์ถ๋ ฅํ๋ ํจ์
function printResult(n, ret){
document.write("<h2>" + n + "๋จ</h2>");
for (var i = 1; i <= 9; i++) {
var y = n * i
document.write(n + "*" + i + "=" + y + "<br>");
}
}
function main() {
console.log("main ํจ์๊ฐ ์คํ๋์์ต๋๋ค.")
for (var n = 2; n <= 9; n++) {
var result = gugudan(n); // n๋จ์ ๊ณ์ฐ.
printResult(n, result); // ๊ณ์ฐ๋ ๋จ์ ์ถ๋ ฅ.
}
}
main();
</script>
</body>
</html>
ํธ์ถํ๋ ๊ฒ์ main(); ๋ฟ!
- gugudan(x) ํจ์
x๋ก ๊ตฌ๊ตฌ๋จ(*1~*9)์ ๊ณ์ฐํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์ด ret์ ๋ฃ์ด ๋ฆฌํด๊ฐ์ผ๋ก ์ฃผ๋ ํจ์.
- printResult(n, ret) ํจ์
ํ๋ฉด์ n๋จ์ ์ถ๋ ฅํ๋ ํจ์.
- main() ํจ์
gugudan(x) ์ printResult(n, ret) ์ ์คํํ๋ ๋ฉ์ธ ํจ์.
โ ํจ์์ ๋งค๊ฐ๋ณ์๋ฅผ ๋ถ๋ฌ์ฌ ๋ ๊ผญ ์ด๋ฆ์ด ๊ฐ์ง ์์๋ ๋๋ค! ์์๋ง ์ค์ํ๋ค!!!
์์ ์ฝ๋์์..
gugudan(x)๋ฅผ main()์์๋ gugudan(n)์ผ๋ก ๋ถ๋ฌ์, ๋ฐ๋ณต๋ฌธ์ ํ์ฉ
printResult(n, ret)์ main()์์๋ printResult(n, result)๋ก ๋ถ๋ฌ์, ๋ฐ๋ณต๋ฌธ์ ํ์ฉํ๊ณ ์ฌ์ ์ ์ ์ํ ๋ณ์๋ฅผ ํ์ฉ
๐ค ๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์๋ฐ..
gugudan(x)์์ ์ด๋ฏธ ๊ณ์ฐํด ret๋ผ๋ ๋ฐฐ์ด์ ๋ฃ์ ๊ตฌ๊ตฌ๋จ ๊ฒฐ๊ณผ๋ฅผ ๊ตณ์ด printResult(n,ret)์์ ๋ค์ ๊ณ์ฐํ๊ณ ์๋ค.
์ฆ printResult(n,ret)์์ ๊ธฐ๊ป ๋ถ๋ฌ์จ ret์ ๊ฒฐ๊ณผ ์ถ๋ ฅ์ ํ์ฉํ์ง ์๊ณ ,
gugudan(x)ํจ์ ๋ด์ฉ๊ณผ ๊ฐ์ ๊ณ์ฐ์ ๋ ํ๊ณ ์๋ค.
-> ์ด๋ฅผ ๊ฐ์ ํ ์ฝ๋๋ ์๋์ ๊ฐ๋ค (์ธํ๋ฐ ์ง๋ต ์ฐธ๊ณ ํจ)
๋ฐ๋ณต๋ฌธ์์ ๋ฐ๋ณตํ ํ์๋ก ๊ตฌ๊ตฌ๋จ ๋ฐฐ์ด ๊ธธ์ด๋ฅผ ์ฐธ์กฐํ๊ณ ,
ํ๋ฉด์ ์ถ๋ ฅํ ๋๋ ๊ตฌ๊ตฌ๋จ ๊ฒฐ๊ณผ๋ก ๊ตฌ๊ตฌ๋จ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ํ์ฉํ๋ค.
function printResult(x, ret){
document.write("<h2>" + x + "๋จ</h2>");
for(i = 0; i < ret.length - 1; i++) {
document.write(x + " * " + (i+1) + " = " + ret[i+1]+ "<br>");
}
}
๐พ๐พ ๋๋ฒ๊น ๊ณผ ์ค๋ต๋ ธํธ
์ค๋ฅ : n ๊ณฑํ๊ธฐ 1์.. ์ ์ ์ถ๋ ฅ๋๋๋ฐ ๊ณฑ์ ๊ฒฐ๊ณผ๊ฐ ์ ๋๋ก ์ถ๋ ฅ๋์ง ์๋๋ค.
- var results =[]; ๋ผ๋ ๋ฐฐ์ด์ ์ ์ํ๋ ์์น๋ main() ์ด ์๋๋ผ, ๊ตฌ๊ตฌ๋จ์ ๊ณ์ฐํ๋ calculate(n,results)์ฌ์ผ ํ๋ค.
๊ณ์ฐํ ๊ฒฐ๊ณผ๋ฅผ results๋ผ๋ ๋ฐฐ์ด์ ๋ด๊ณ , ์ด results๋ฅผ returnํด์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ , calculate()์๋ results๋ผ๋ '๋งค๊ฐ๋ณ์'๊ฐ ์๋ '๋ฐฐ์ด'์ด ํ์ํ๋ค.
- calculate(x) ์์ ret[i] = x * i ๋ฅผ ํด์ผ ํ๋๋ฐ ret[i] = x * 1 ์ ํ๊ณ ์์๋ค. ๐คฌ