Bibi's DevLog ๐Ÿค“๐ŸŽ

[์ธํ”„๋Ÿฐ] Javascript์ž…๋ฌธ - ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•ด ๊ตฌ๊ตฌ๋‹จ ๋‹ค์‹œ ๊ตฌํ˜„(์‹ค์Šต, ํ•ด์„ค) ๋ณธ๋ฌธ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ/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

 

ํ•จ์ˆ˜

ํ•จ์ˆ˜๋Š” JavaScript์—์„œ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์„ฑ ๋ธ”๋ก ์ค‘์˜ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ํ•จ์ˆ˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋Š” ๋ฌธ์žฅ ์ง‘ํ•ฉ ๊ฐ™์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ ˆ์ฐจ์ž…๋‹ˆ๋‹ค. ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฒ”๏ฟฝ๏ฟฝ

developer.mozilla.org

https://youtu.be/IOuePUzLdnQ

 ์ƒํ™œ์ฝ”๋”ฉ 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 ์„ ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ๐Ÿคฌ