๐Ÿ‘ถ๐Ÿฝ ๋‹จ๊ณ„

8881 ๋‹จ์–ด nodebeginners

learnyounode ํšŒ์‚ฌ


ํ„ฐ๋ฏธ๋„: learnyounode ๋ฉ”๋‰ด๋ฅผ ๋‹ค์‹œ ์—ด๊ณ  ๋‘ ๋ฒˆ์งธ ๋„์ „์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ


์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•˜์—ฌ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. touch baby-steps.js

๊ฐœ์š”

  • ๋ช…๋ นํ–‰ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ๋ช‡ ๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋ฐ›์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ๋Š” ์ด ์ˆซ์ž๋“ค์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹คconsole.
  • ํ”„๋กœ์„ธ์Šคargv

    node๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.๋Œ€์ฒด๋กœ๊ทธ๋ƒฅํ”„๋กœ์„ธ์Šค๐Ÿ˜ผ, ๊ทธ๋Ÿฌ๋‚˜ ๋Œ€์ƒ ๋ชจ๋ธ๋ง์œผ๋กœ์„œ ์šฐ๋ฆฌ๋Š” ์  ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ข…๐Ÿ”‘๊ทธ์ค‘ ํ•˜๋‚˜๐Ÿ”‘s: process.argv ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ๋ฌผ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์ด ๊ณผ์ •์—์„œ ๊ฐœ๋…์„ ํƒ์ƒ‰ํ•  ๊ฒƒ์ด๋‹ค.
    ํŒŒ์ผ์— ์ž…๋ ฅ: learnyounode run baby-steps.js - console.log(process.argv) ์€ log ๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ info ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ง„์ •์œผ๋กœ ๊ด€์‹ฌ์„ ๊ฐ€์ง€์ง€ ์•Š๋Š”๋‹ค๋Š” ์ž„์‹œ ๋ฉ”์‹œ์ง€ Source ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    ๋‹น์‹ log์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    [
      '/usr/local/Cellar/node/14.14.0/bin/node',
      '/Users/codefinity/Code/Lurn/nodeschool/learnyounode/baby-steps.js',
      '9',
      '95'
    ]
    
    ์ด๊ฒƒ์€ ์ˆ˜์กฐ๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์ด ํ์‡„์ learnyounode run baby-steps.js[์ด๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์กฐ๋ผ๋Š” ๊ฒƒ์„ ์•ˆ๋‹ค.
    ์•ž์˜ ๋‘ ์›์†Œ (์›์†Œ๋งˆ๋‹ค ] ๋กœ ๊ตฌ๋ถ„๋จ) ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ง„์ •์œผ๋กœ ๊ด€์‹ฌ์„ ๊ฐ€์ง€์ง€ ์•Š๋Š”๋‹ค.๋„ˆ์ฒ˜๋ŸผC๐Ÿ‘€, ๊ทธ๊ฒƒ์€ ๋‹จ์ง€ , ๊ณผ ์šฐ๋ฆฌ๊ฐ€ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋Š” ํŒŒ์ผ์— ๋Œ€ํ•œ ์ •๋ณด์ผ ๋ฟ์ด๋‹ค๐Ÿƒ๐Ÿฝโ€โ™‚๏ธ.
    ๋‹ค์Œ ๋‘ ์š”์†Œ๋Š” node ์—์„œ ์ œ๊ณตํ•œ ์ˆซ์ž์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.learnyounode ๋Š” ์šฐ๋ฆฌ๊ฐ€ process.argv ์—์„œ ๋ช…๋ นํ–‰ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์ฝ๋Š” ๋ฐฉ์‹์ด๋‹ค.
    ์ด ์ ์—์„œ ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ์ž‘์„ ์‹คํ–‰ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. node (์ƒ๊ฐํ•ด ๋ณด๋ฉด ์šฐ๋ฆฌ๋Š” console.info(process.argv[2] + process.argv[3])๋ถ€ํ„ฐ ์‹œ์ž‘๋œ ๋””์ง€ํ„ธ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ๊ทธ๋ฃน์˜ ์š”์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.)
    ํ•˜์ง€๋งŒ์ด๊ฒƒ์€ ๊ทธ๋‹ค์ง€ ์˜จ๊ฑดํ•˜์ง€ ์•Š๋‹ค.์šฐ๋ฆฌ๋Š” ์ˆ˜๋Ÿ‰์ด ๋ณ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

    ์ˆ˜์กฐ ๋ถ„ํ•ด 0


    const [_, __, ...numbers] = process.argv;
    console.log(numbers);
    
    ์ด ์ฝ”๋“œ ํ…Œ์ŠคํŠธ: argv.๋„ˆ๋Š” ๋ฐ˜๋“œ์‹œ ์ด๋Ÿฐ ๊ฒƒ์„ ๋ณด์•„์•ผ ํ•œ๋‹ค. learnyounode run baby-steps.js.๋ฌด์Šจ ์ผ๐Ÿค”?

    ํ•ด์ฒดํ•˜๋‹ค

    [ '11', '95', '58' ], ๋ฌผ๋ก  JS์— ์šฐ๋ฆฌ๊ฐ€ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๊ณ  ์„ฑ๋ช…ํ•ฉ๋‹ˆ๋‹ค.๋‹ค์Œ์œผ๋กœ ์šฐ๋ฆฌ๋Š” const๋ฅผ ๋ณด์•˜๋‹ค.์ด๊ฒƒ์€ ํŒจํ„ด ๋ถ„ํ•ด์ž…๋‹ˆ๋‹ค.์šฐ๋ฆฌ๋Š” [_, __, ...numbers] = = process.argv ๊ทธ๋ฃน์—์„œ ์ƒ‰์ธ๋ณ„๋กœ ๊ฐ’์„ ์ถ”์ถœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
    ๋Œ์ด์ผœ๋ณด๋ฉด ์šฐ๋ฆฌ๋Š” process.argv์˜ ๋‘ ๋ฒˆ์งธ ์ง€์ˆ˜์— ๊ด€์‹ฌ์ด ์—†๋‹ค๐Ÿ‘†๐Ÿฝ. ์ด๊ฒƒ์ด ๋ฐ”๋กœ process.argv๊ณผ_์ด๋‹ค.๋„ˆ๋Š” ๋„ค๊ฐ€ ์›ํ•˜๋Š” ์ด๋ฆ„์„ ๊ฑฐ๊ธฐ์— ๋†“์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด ๋ฐ‘์ค„์€ ์šฐ๋ฆฌ๊ฐ€ ๋ณ€์ˆ˜๋ฅผ ๋ฒ„๋ฆฌ๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ด€๋ก€์ด๋‹ค.๋”ฐ๋ผ์„œ __๊ณผargv[0]-๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์šฐ๋ฆฌ๋Š” ๋ฌด๊ด€์‹ฌํ•œ ์ผ์ด ๋  ๊ฒƒ์ด๋‹ค.

    ์—ฐ์‚ฐ์ž ๋ฐฐ์—ด


    ๋‹ค์Œ์œผ๋กœ ์šฐ๋ฆฌ๋Š” argv[1]๋ฅผ ๋ณด์•˜๋‹ค.์ด๊ฒƒ์€ ... ์ˆ˜์กฐ์— ์กด์žฌํ•˜๋Š” ๋‚˜๋จธ์ง€ ๊ฐ’ (2๊ฐœ๋“  1000๊ฐœ๋“ ) ์„ ๋ถ„์‚ฐํ•˜๊ณ  argv ์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ์ˆ˜์กฐ์— ์ˆ˜์ง‘ํ•˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.์ด๊ฒƒ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ ์ด๋‹คnumbers.๐Ÿ‘€ ์šฐ๋ฆฌ ํ„ฐ๋ฏธ๋„์—์„œ

    ์œ„๋กœํ•˜๋‹ค์ˆซ์ž ๊ธฐ๋กํ•˜๊ธฐ (๊ทธ๋ฆฌ๊ณ  ์ˆซ์ž ๊ธฐ๋กํ•˜๊ธฐ)


    ์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๋‚˜๋จธ์ง€ ์ฝ”๋“œ๋‹ค.
    console.info(
      numbers.reduce((total, number) => {
        let t = total;
        t += Number(number);
        return t;
      }, 0)
    );
    
    ์šฐ๋ฆฌ๋Š” reduce ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด reduce๋Š” ํ•˜๋‚˜์˜ ์ˆ˜์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.numbers ์ค‘ ๋ช‡ ๊ฐœ์˜ ์ˆซ์ž๊ฐ€ ์žˆ๋“ ์ง€ ๊ฐ„์— ์šฐ๋ฆฌ๋Š” ๋ฐ˜๋ณต numbers ํ•˜์—ฌ ๊ฐ ์ˆซ์ž numbers ๋ฅผ ๋ณผ ๊ฒƒ์ด๋‹ค.์šฐ๋ฆฌ๋Š” num reduce ์„ ํ•˜๋‚˜์˜ ์ˆซ์ž numbers ๋กœ ๋‚ฎ์ถœ ๊ฒƒ์ด๋‹ค.์ด๊ฒƒ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ชจ๋“  ์ˆซ์ž๋ฅผ ๊ตฌํ•˜๋Š”์ง€์˜ ๋ฐฉ์‹์ด๋‹ค.total ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    (total, number) => {
        let t = total;
        t += Number(number);
        return t;
      }
    
    ์ด๊ฒƒ์€ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ํ˜ธ์ถœํ•˜๊ณ  ์žˆ๋Š” ๋ฆฌ์…‹ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.๐Ÿ“ฒ ๋‹ค๋ฅธ ํ•จ์ˆ˜/๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๋ฐ˜ํ™˜ reduce.์ด ๋ฆฌ์…‹ ํ•จ์ˆ˜๋Š” ํ™”์‚ดํ‘œ ๋ฌธ๋ฒ•์œผ๋กœ ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค.์•„์ง ๊ธฐ๋Šฅ์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.


    .
    ์šฐ๋ฆฌ์˜ ๋ฆฌ์…‹ ํ•จ์ˆ˜๋Š” ๋‘ ๊ฐœ์˜ ๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋‹ค. reduce.์ด๊ฒƒ๋“ค์€ ์šฐ๋ฆฌ๋ฅผ ๋Œ€ํ‘œํ•œ๋‹ค...์ด๊ฒƒ๐Ÿƒ๐Ÿฝโ€โ™‚๏ธ ์ด ๋ฐ ๋ฐฐ์—ด์˜ ํ˜„์žฌ ์ˆซ์ž์ž…๋‹ˆ๋‹ค.
    let t = total;
        t += Number(number);
        return t;
    
    ํ˜„์žฌ, ๋ชจ๋“  ๊ต์ฒด์— ๋Œ€ํ•ด ์šฐ๋ฆฌ๋Š” (total, num) total์— ๋ถ„๋ฐฐํ•  ๊ฒƒ์ด๋‹ค. t ๋ณ€์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด - ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.)๊ทธ๊ฒŒ ๋ฌด์Šจ ๋œป์ธ์ง€ YDK๊ฐ€ ์•Œ๋ฉด
    ๋‹ค์Œ์œผ๋กœ ์šฐ๋ฆฌ๋Š” ์ด์ˆ˜let t = total;๋ฅผ ์ทจํ•˜๊ณ  ์ „๋ฅ˜t๋ฅผ ๋”ํ•ด์•ผ ํ•œ๋‹ค.์ด ๊ณผ์ •์—์„œ ์šฐ๋ฆฌ๋Š” ๋ฌธ์ž์—ด number (๋ช…๋ น์ค„ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋ฌธ์ž์—ด๋กœ ๋‚˜ํƒ€๋‚จ) ์„ ํ˜„์‹ number ์œผ๋กœ ๋ณ€ํ™˜ํ–ˆ๋‹ค.์ด๊ฒƒ์€ JS์˜ ์–ด๋ฆฌ์„์€ ์ง๋ ฌ ํ–‰๋™์„ ๋ง‰์„ ๊ฒƒ์ด๋‹ค๐Ÿ˜ .
    ๋งˆ์ง€๋ง‰์œผ๋กœ ์šฐ๋ฆฌNumber๋Š” ์ƒˆ๋กœ์šด ์ด๊ณ„-return๋ฅผ ๊ฐฑ์‹ ํ–ˆ๊ณ  ๊ณผ์ •์€ ๊ณ„์†, ๊ฐฑ์‹ t๊ณผ total์—์„œ ๊ฐ๊ฐnumber์„ ๊ต์ฒดํ–ˆ๋‹ค.

    ์ˆซ์ž ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜(์˜ต์…˜)


    ๋ฆฌ์…‹ ํ•จ์ˆ˜ ์ดํ›„์— ์šฐ๋ฆฌ๋Š” reduce๋ฅผ ๋ณด์•˜๋‹ค.๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” }, 0) ์—์„œ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค total.๊ธฐ์ˆ ์ ์œผ๋กœ ๋งํ•˜์ž๋ฉด, ์šฐ๋ฆฌ๋Š” ๋ณธ๋ž˜ ์ด๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ, ๋‚˜๋Š” ๋งค์šฐ ๋งŽ์€ 0 ๊ณคํ˜น์Šค๋Ÿฌ์›€์„ ๋ฐœ๊ฒฌํ•˜์˜€๋‹ค๐Ÿ˜• ์ด ์„ ํƒ ๊ฐ€๋Šฅํ•œ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ํฌํ•จํ•˜์—ฌ "total"์„ ํ˜„์‹œ์ ์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค

    ์ง€๊ธˆ ๋‹ค ๊ฐ™์ด ์žˆ์–ด์š”.๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘


    ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒreduce์„ ํ•˜๋‚˜reduce์— ๋ด‰์ธํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด console.info์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๋„์ „์„ ํ†ตํ•ด!๐Ÿค“
    const [_, __, ...args] = process.argv;
    
    console.info(
      args.reduce((total, arg) => {
        let t = total;
        t += Number(arg);
        return t;
      }, 0)
    );
    

    ์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ