✏️ 2025. 1μ›” 23일 / javascript μ΄ˆκΈ‰ 14

πŸ”΄ 읡λͺ… ν•¨μˆ˜ ν‘œν˜„μ‹
μΌλ°˜ν•¨μˆ˜μ •μ˜λ¬Έμ˜ 경우 ν•¨μˆ˜λͺ…을 μ„ μ–Έν•˜κ³  κ·Έ 이름을 μ‚¬μš©ν•˜μ—¬ ν˜ΈμΆœν–ˆμŠ΅λ‹ˆλ‹€.
이 방법은 ν•¨μˆ˜ 이름을 μ•Œκ³  있으면 μ–΄λ””μ—μ„œλ‚˜ ν˜ΈμΆœν•˜μ—¬ μ‚¬μš©ν•  수 μžˆμ–΄ 많이 μ‚¬μš©ν•©λ‹ˆλ‹€.
이 밖에도 λ”°λ‘œ ν•¨μˆ˜ 이름을 μ§€μ •ν•˜μ§€ μ•Šκ³  μ‚¬μš©ν•˜κ±°λ‚˜,
ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ§€ μ•Šκ³  λ°”λ‘œ μ‹€ν–‰ν•˜λŠ” 방법도 μžˆμŠ΅λ‹ˆλ‹€.
읡λͺ…ν•¨μˆ˜λŠ” 이름이 μ—†λŠ” ν•¨μˆ˜λ₯Ό λ§ν•©λ‹ˆλ‹€.
즉, 읡λͺ…ν•¨μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œμ—λŠ” 이름을 뢙이지 μ•ŠμŠ΅λ‹ˆλ‹€.
κ·Έλž˜μ„œ 이 ν•¨μˆ˜λ₯Ό λ³€μˆ˜μ— λ„£μ–΄λ‘μ—ˆλ‹€κ°€ λ³€μˆ˜λͺ…을 μ΄μš©ν•˜μ—¬ ν˜ΈμΆœν•©λ‹ˆλ‹€.
읡λͺ…ν•¨μˆ˜λŠ” ν˜Έμ΄μŠ€νŒ… κΈ°μˆ μ„ μ§€μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
λ°˜λ“œμ‹œ ν•¨μˆ˜λ₯Ό λ¨Όμ € λ§Œλ“  후에 ν˜ΈμΆœν•΄μ•Ό ν•©λ‹ˆλ‹€.

      [κΈ°λ³Έν˜•]
      let λ³€μˆ˜λͺ… = function() {μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œ;}
      λ³€μˆ˜λͺ…(); -> 읡λͺ… ν•¨μˆ˜ 호좜문

πŸ”΄ ν•¨μˆ˜μ—μ„œ return문의 μ—­ν• 
return문은 ν•¨μˆ˜μ—μ„œ 결괏값을 λ°˜ν™˜ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€.
그리고 ν•¨μˆ˜μ—μ„œ return문이 λ“±μž₯ν•˜λ©΄ 반볡문의 breakλ¬Έκ³Ό λΉ„μŠ·ν•˜κ²Œ μ½”λ“œκ°€ κ°•μ œ μ’…λ£Œλ©λ‹ˆλ‹€.
즉, ν•¨μˆ˜μ˜ 결괏값을 λ°˜ν™˜ν•˜λ©΄μ„œ κ°•μ œ μ’…λ£Œ μ‹œν‚€λŠ” λ¬Έμž₯μž…λ‹ˆλ‹€.

      [κΈ°λ³Έν˜•]
      1. 일반 ν•¨μˆ˜ μ •μ˜λ¬Έ
      --------------------------------------
      function ν•¨μˆ˜λͺ…(){
      μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œ 1; 
      return 데이터(κ°’); > 데이터 값을 λ°˜ν™˜ ν›„ μ’…λ£Œ
      μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œ 2; > μ‹€ν–‰ν•˜μ§€ μ•Šκ³  λ¬΄μ‹œλœλ‹€.
      }
      2. 읡λͺ…ν•¨μˆ˜(ν•¨μˆ˜ν‘œν˜„μ‹)
      --------------------------------------
      let λ³€μˆ˜ = function(){
      μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œ 1; 
      return 데이터(κ°’); > 데이터 값을 λ°˜ν™˜ ν›„ μ’…λ£Œ
      μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œ 2; > μ‹€ν–‰ν•˜μ§€ μ•Šκ³  λ¬΄μ‹œλœλ‹€.
      }

πŸ”΄ μ‹€μ œλ‘œ ν•œλ²ˆ μ‚¬μš©ν•΄λ³ΌκΉŒμš”?

      //읡λͺ… ν•¨μˆ˜ 호좜문 μ‚¬μš©ν•΄λ³΄κΈ°
      let sum = function (a, b) {
        return a + b;
      };
      document.write(`ν•¨μˆ˜ μ‹€ν–‰κ²°κ³Ό : ${sum(10, 20)} <br/>`);
      //읡λͺ…ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ μ‚¬μš©μžμ˜ κ΅­μ–΄, μˆ˜ν•™ 점수λ₯Ό λ°›μ•„ 화면에 좜λ ₯ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.
      let testAvg = function (arrData) {
        //κ΅­μ–΄ μ μˆ˜μ™€ μˆ˜ν•™ 점수의 평균 점수λ₯Ό κ΅¬ν•©λ‹ˆλ‹€.
        let sum = 0;
        //arrData에 λ“€μ–΄μžˆλŠ” 데이터 갯수만큼 λ°˜λ³΅ν•œλ‹€.
        for (let i = 0; i < arrData.length; i++) {
          //1. prompt(arrData[i] + "점수λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”", "0점") μ‹€ν–‰
          //2. prompt둜 λ°›μ•„μ˜¨ λ¬Έμžν˜• 숫자λ₯Ό Number()둜 ν˜• λ³€ν™˜
          //3. ν˜• λ³€ν™˜ 된 숫자λ₯Ό sumκ³Ό 더함
          sum += Number(prompt(arrData[i] + "점수λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”", "0점"));
        }
        //avg = ν•©μ‚°μ μˆ˜ λ‚˜λˆ„κΈ° λ°°μ—΄μ˜ 데이터 갯수(κ³Όλͺ© 수)
        let avg = sum / arrData.length;
        return avg;
      };
      let arrSubject = ["κ΅­μ–΄", "μˆ˜ν•™"];
      let result = testAvg(arrSubject);
      document.write(`평균 μ μˆ˜λŠ” : ${result}점 μž…λ‹ˆλ‹€.`);



🟑 ν™”μ‚΄ν‘œ ν•¨μˆ˜
ES6λ²„μ „λΆ€ν„°λŠ” 읡λͺ… ν•¨μˆ˜λ₯Ό ν‘œκΈ°ν•  λ•Œ μ’€ 더 쉽고
μ§κ΄€μ μœΌλ‘œ λ§Œλ“€ 수 μžˆλŠ” 'ν™”μ‚΄ν‘œ ν•¨μˆ˜'κ°€ μƒκ²ΌμŠ΅λ‹ˆλ‹€.

      [κΈ°λ³Έν˜•]
      let λ³€μˆ˜ = (λ§€κ°œλ³€μˆ˜) => {μ½”λ“œ};
      -
      1. let λ³€μˆ˜ = () => {μ½”λ“œ};
      : λ§€κ°œλ³€μˆ˜κ°€ 없을 경우 λ§€κ°œλ³€μˆ˜ μžλ¦¬μ— ()λ₯Ό μž‘μ„±ν•©λ‹ˆλ‹€.
      -
      2. let λ³€μˆ˜ = λ§€κ°œλ³€μˆ˜ => {μ½”λ“œ};
      : λ§€κ°œλ³€μˆ˜κ°€ 1개인 경우 ()λ₯Ό μƒλž΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
      -
      3. let λ³€μˆ˜ = λ§€κ°œλ³€μˆ˜ => μ½”λ“œ;
      : λ§€κ°œλ³€μˆ˜κ°€ 1κ°œμ΄λ©΄μ„œ μ‹€ν–‰μ‹œν‚¬ μ½”λ“œκ°€ 1쀄인 경우 λ§€κ°œλ³€μˆ˜μ˜ ()도 μƒλž΅ν• μˆ˜ 있고,
        μ½”λ“œ 자리의 {}도 μƒλž΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
        μ΄λ•Œ, return도 μƒλž΅λœ κ²ƒμœΌλ‘œ κ°„μ£Όν•©λ‹ˆλ‹€.
      -    
      4. let λ³€μˆ˜ = (λ§€κ°œλ³€μˆ˜1, λ§€κ°œλ³€μˆ˜2) => {μ½”λ“œ};
      : λ§€κ°œλ³€μˆ˜κ°€ 2개 이상일 경우 ()λ₯Ό κΌ­ μž‘μ„±ν•˜κ³  콀마(,)둜 κ΅¬λΆ„ν•©λ‹ˆλ‹€.
      -
      5. let λ³€μˆ˜ = λ§€κ°œλ³€μˆ˜ => {μ½”λ“œ1, μ½”λ“œ2}
      : μž‘μ„±ν•  μ½”λ“œκ°€ 2쀄 이상인 경우 {}λ₯Ό μ¨μ•Όν•˜κ³  λ§Œμ•½ 값을 λ°˜ν™˜ν•΄μ•Ό ν•  경우 return도 μž‘μ„±ν•©λ‹ˆλ‹€.



🟒 λ§€κ°œλ³€μˆ˜μ— κΈ°λ³Έκ°’ μ§€μ •ν•˜κΈ°
ES6λ²„μ „λΆ€ν„°λŠ” ν•¨μˆ˜μ— λ§€κ°œλ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œ 기본값을 μ§€μ •ν•˜λŠ” κΈ°λŠ₯이 μƒκ²ΌμŠ΅λ‹ˆλ‹€.
ν•¨μˆ˜λŠ” λ§€κ°œλ³€μˆ˜μ˜ κ°―μˆ˜μ™€ 인수의 κ°―μˆ˜κ°€ λ™μΌν•΄μ•Όν•©λ‹ˆλ‹€.
λ§Œμ•½ λ§€κ°œλ³€μˆ˜μ˜ κ°―μˆ˜μ™€ 인수의 κ°―μˆ˜κ°€ λ‹€λ₯΄λ©΄ ν•¨μˆ˜λŠ” μ •μƒμ μœΌλ‘œ μ‹€ν–‰λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
ν•˜μ§€λ§Œ κ²½μš°μ— 따라 ν•¨μˆ˜μ˜ 인수λ₯Ό 3κ°œκΉŒμ§€ 보낼 수 μžˆλŠ” ν•¨μˆ˜μ—μ„œ 인수λ₯Ό 1개만 λ³΄λ‚΄κ±°λ‚˜ 2개만 보낼 경우,
λ§€κ°œλ³€μˆ˜μ— 기본값을 μ§€μ •ν•΄μ£Όλ©΄ ν•¨μˆ˜λ₯Ό μ•ˆμ „ν•˜κ²Œ μ‹€ν–‰μ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

      [κΈ°λ³Έν˜•]
      function ν•¨μˆ˜λͺ…(λ§€κ°œλ³€μˆ˜1 = κ°’1, λ§€κ°œλ³€μˆ˜2 = κ°’2,λ§€κ°œλ³€μˆ˜3 = κ°’3){
      μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œ;
      }
      ν•¨μˆ˜λͺ…(인수1);
      ν•¨μˆ˜λͺ…(인수1, 인수2);
      ν•¨μˆ˜λͺ…(인수1, 인수2, 인수3);

πŸ”΅ ν•¨μˆ˜μ˜ μŠ€μ½”ν”„
ν•¨μˆ˜ μŠ€μ½”ν”„λž€ ν•¨μˆ˜κ°€ μ„ μ–Έλœ μœ„μΉ˜μ— 따라 λ‹¬λΌμ§€λŠ” 'μœ νš¨λ²”μœ„'λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.
ν•¨μˆ˜μ•ˆμ—λŠ” 또 λ‹€λ₯Έ ν•¨μˆ˜λ₯Ό 넣을 수 μžˆμŠ΅λ‹ˆλ‹€.
μ΄λ•Œ μ•ˆμ— μžˆλŠ” ν•¨μˆ˜λ₯Ό 'μ§€μ—­ν•¨μˆ˜',
μ§€μ—­ν•¨μˆ˜λ₯Ό 감싸고 μžˆλŠ” 슀크립트 μ˜μ—­μ— μ„ μ–Έλœ ν•¨μˆ˜λ₯Ό 'μ „μ—­ν•¨μˆ˜'라고 ν•©λ‹ˆλ‹€.
ν”„λ‘œμ νŠΈμ˜ 규λͺ¨κ°€ 크면 μ—¬λŸ¬ λͺ…μ˜ κ°œλ°œμžκ°€ νˆ¬μž…λ˜λŠ”λ°,
λ§Œμ•½ 같은 μ΄λ¦„μ˜ μ „μ—­ λ³€μˆ˜λ‚˜ μ „μ—­ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ 좩돌이 λ°œμƒν•©λ‹ˆλ‹€.
λ˜ν•œ λ‹€λ₯Έ κ°œλ°œμžκ°€ 이미 κ°œλ°œν•΄λ†“μ€ λΌμ΄λΈŒλŸ¬λ¦¬λ‚˜ ν”ŒλŸ¬κ·ΈμΈμ˜ λ³€μˆ˜ λ˜λŠ” ν•¨μˆ˜μ˜ 이름과
μžμ‹ μ΄ μ‚¬μš©ν•˜λŠ” λ³€μˆ˜λ‚˜ ν•¨μˆ˜μ˜ 이름이 같은 κ²½μš°μ—λ„ 좩돌이 λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
이럴 λ•Œ μ§€μ—­ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜λ©΄ μžμ‹ μ˜ μ½”λ“œλ₯Ό μ•ˆμ „ν•˜κ²Œ 지킬 수 μžˆμŠ΅λ‹ˆλ‹€.

      [κΈ°λ³Έν˜•]
      <script>
        function ν•¨μˆ˜λͺ…1() { > μ „μ—­ν•¨μˆ˜
          function ν•¨μˆ˜λͺ…2() { μ½”λ“œ } > μ§€μ—­ν•¨μˆ˜, ν•¨μˆ˜λͺ…2의 μœ νš¨λ²”μœ„λŠ” ν•¨μˆ˜λͺ… 1의 μ•ˆμͺ½μ΄λ‹€.
          ν•¨μˆ˜λͺ…2(); > μœ νš¨λ²”μœ„ μ•ˆ, 호좜이 κ°€λŠ₯
        }
        ν•¨μˆ˜λͺ…1(); > μ „μ—­ν•¨μˆ˜ 호좜
        ν•¨μˆ˜λͺ…2(); > μœ νš¨λ²”μœ„λ₯Ό 벗어남, 호좜이 λΆˆκ°€λŠ₯
        </script>

🟣 μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜
일반적으둜 ν•¨μˆ˜λŠ” μ„ μ–Έν•˜κ³  ν•„μš”ν• λ•Œλ§ˆλ‹€ ν˜ΈμΆœν•΄μ„œ μ‹€ν–‰ν•˜λŠ” 방법을 많이 μ‚¬μš©ν•©λ‹ˆλ‹€.
ν•˜μ§€λ§Œ ν•œ 번만 μ‹€ν–‰ν•˜λŠ” ν•¨μˆ˜λΌλ©΄ ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜λ©΄μ„œ λ™μ‹œμ— μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
이게 λ°”λ‘œ μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜ μž…λ‹ˆλ‹€.
μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ λΈŒλΌμš°μ €κ°€ λ‘œλ”©λ˜λŠ” μˆœκ°„ λ°”λ‘œ μ‹€ν–‰ν•©λ‹ˆλ‹€.
κΈ°λ³Έν˜•μ—μ„œ function(){}() λ§ˆμ§€λ§‰μ— λΆ™μ–΄μžˆλŠ” ()은 ν•¨μˆ˜μ˜ 호좜문 μž…λ‹ˆλ‹€.
μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜λŠ” 읡λͺ…ν•¨μˆ˜μ˜ ν˜•νƒœλ₯Ό κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€.
즉, ν•¨μˆ˜ ν‘œν˜„μ‹μž…λ‹ˆλ‹€.
κ·Έλ ‡κΈ° λ•Œλ¬Έμ— ()뒀에 μ„Έλ―Έμ½œλ‘ μ„ λΆ™μ—¬μ£Όμ–΄μ•Ό ν•©λ‹ˆλ‹€.

      [κΈ°λ³Έν˜•]
      (function(λ§€κ°œλ³€μˆ˜){
        μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œ;
      }(호좜문));
      λ˜λŠ” 
      (function(λ§€κ°œλ³€μˆ˜){
        μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œ;
      })(호좜문);

🟀 μž¬κ·€ ν•¨μˆ˜ 호좜
ν•¨μˆ˜ μ •μ˜λ¬Έ λ‚΄μ—μ„œ μž‘μ„±ν•œ μ½”λ“œλ‘œ ν•¨μˆ˜λ₯Ό λ‹€μ‹œ ν˜ΈμΆœν•˜λŠ” 것을 'μž¬κ·€ ν•¨μˆ˜ 호좜'이라고 ν•©λ‹ˆλ‹€.
μž¬κ·€ ν•¨μˆ˜ ν˜ΈμΆœμ„ μ‚¬μš©ν•˜λ©΄ 반볡문처럼 μ—¬λŸ¬ 번 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.

      [κΈ°λ³Έν˜•]
      function ν•¨μˆ˜λͺ…() {
        μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œ;
        ν•¨μˆ˜λͺ…(); > μž¬κ·€ ν•¨μˆ˜ 호좜, μœ„μͺ½μ˜ μ½”λ“œλ₯Ό μ‹€ν–‰ν•œ ν›„ 또 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€.
      }
        ν•¨μˆ˜λͺ…(); > λ°”κΉ₯μ—μ„œ ν•œ 번 ν˜ΈμΆœν•©λ‹ˆλ‹€.

πŸ—¨οΈ μ†μœΌλ‘œ 직접 κ³΅λΆ€ν•œ λ‚΄μš©μ„ λ°”νƒ•μœΌλ‘œ μž‘μ„±ν•œ κΈ€μ΄λžλ‹ˆλ‹€ !
βœ–οΈ
μ•žμœΌλ‘œλ„ μ—΄μ‹¬νžˆ κ³΅λΆ€ν•΄μ„œ λ§Žμ€ λ‚΄μš©μ„ κ³΅μœ ν•˜κ² μŠ΅λ‹ˆλ‹€ :)

profile
🎧 α΄˜ΚŸα΄€ΚΙͺΙ΄Ι’: UXUI (Feat: coding) ─────────βšͺ───── 𝟸:𝟷𝟾 / 𝟹:πŸ»πŸΌβ € γ…€ ◄◄⠀▐▐⠀►► ───○ πŸ”Š

0개의 λŒ“κΈ€