λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Frontend Dev/JavaScript

μžλ°”μŠ€ν¬λ¦½νŠΈ λ°˜ν™˜(return)λ¬Έ μ‚¬μš©ν•˜κΈ°

λ°˜μ‘ν˜•

πŸ‘Ύ λ°˜ν™˜(ruturn)λ¬Έμ΄λž€?

 μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œλŠ” ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν–ˆμ„ λ•Œ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œ 곳에 νŠΉμ • 값을 λ°˜ν™˜ν•˜κ²Œ ν•  수 μžˆλŠ”λ°, 이 νŠΉμ • 값을 λ°˜ν™˜ κ°’(return value)이라고 ν•œλ‹€. λ°˜ν™˜κ°’μ„ 톡해 ν•¨μˆ˜μ—μ„œ μ‹€ν–‰λœ κ²°κ³Όλ₯Ό 전달받을 수 μžˆλ‹€.

 

function sum(x, y) {
  return x + y; // λ°˜ν™˜λ¬Έ	
}

let result = sum(1, 2);
console.log(result) // 3

→ return문의 κ²°κ³ΌλŠ” ν•¨μˆ˜ μ™ΈλΆ€λ‘œ λ°˜ν™˜λ˜κ³ , ν•¨μˆ˜ μ™ΈλΆ€μ—μ„œ ν•¨μˆ˜μ˜ μ‹€ν–‰κ²°κ³Όλ₯Ό 확인할 수 μžˆλ‹€.

 

πŸ‘©πŸ»‍πŸ’» example

function examPass(name, html, css, js){
  let comment = name + '학생은 ';
  if (html >= 60 && css >= 60 && js >= 60) {
      comment += 'μ „κ³Όλͺ© PASS';
  } else {
    if (html < 60) {
      comment += 'html μž¬μ‹œν—˜ ';
    }
    if (css < 60) {
      comment += 'css μž¬μ‹œν—˜ ';
    }
    if (js < 60) {
      comment += 'javascript μž¬μ‹œν—˜';
    }
  }
  return comment;
}
console.log(examPass('A', 80,90,70)); // A학생은 μ „κ³Όλͺ© PASS
console.log(examPass('B', 80,50,50)); // B학생은 css μž¬μ‹œν—˜ javascript μž¬μ‹œν—˜
console.log(examPass('C', 50,50,70)); // C학생은 html μž¬μ‹œν—˜ css μž¬μ‹œν—˜

 

πŸ‘Ύ returnλ¬Έ μ‚¬μš©ν•˜κΈ°

1. return은 ν•¨μˆ˜ λ‚΄ μ–΄λ””μ„œλ“  μ‚¬μš©ν•  수 μžˆλ‹€.

 ν•¨μˆ˜ λ‚΄λΆ€μ˜ μ½”λ“œκ°€ μ°¨λ‘€λŒ€λ‘œ μ‹€ν–‰λ˜λ‹€κ°€ return을 λ§Œλ‚˜λ©΄ ν•¨μˆ˜ 싀행은 μ¦‰μ‹œ μ€‘λ‹¨λ˜κ³  ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œ 곳에 값을 λ°˜ν™˜ν•œ ν›„ ν•¨μˆ˜λŠ” μ’…λ£Œλœλ‹€. (returnλ¬Έ 뒀에 λ‚˜μ˜€λŠ” μ½”λ“œλŠ” μ‹€ν–‰λ˜μ§€ μ•ŠμŒ)

function sum(x, y) {
  return x + y; // λ°˜ν™˜λ¬Έ
  console.log('μ‹€ν–‰λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€');
}

let result = sum(1, 2);
console.log(result) // 3

let sumResult = sum(3, 2) + sum(5, 7);
console.log(sumResult) // 17

• ν•¨μˆ˜ 호좜 κ²°κ³Όλ₯Ό λ³€μˆ˜(result)에 ν• λ‹Ήν•  수 μžˆλ‹€.

• ν•¨μˆ˜μ˜ 호좜 결과끼리의 연산도 κ°€λŠ₯ν•˜λ‹€.

 

2. return만 λͺ…μ‹œν•  수 있고, return문이 없을 μˆ˜λ„ μžˆλ‹€.

 return만 λͺ…μ‹œλœ ν•¨μˆ˜λŠ” return을 λ§Œλ‚˜λ©΄ μ¦‰μ‹œ μ’…λ£Œλœλ‹€.

 return μ§€μ‹œμžλ§Œ μžˆκ±°λ‚˜ return문이 μ—†λŠ” ν•¨μˆ˜λŠ” undefinedλ₯Ό λ°˜ν™˜ν•œλ‹€.

 

πŸ‘©πŸ»‍πŸ’» return만 λͺ…μ‹œν•œ 경우

function showError(){
  console.log("μ—λŸ¬κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.");
  return;

  console.log("이 μ½”λ“œλŠ” μ ˆλŒ€λ‘œ μ‹€ν–‰λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.");
}

const result = showError(); // μ—λŸ¬κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.
console.log(result); // undefined

 

πŸ‘©πŸ»‍πŸ’» return문이 μ—†λŠ” 경우

function showError(){
  console.log("μ—λŸ¬κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.");
}

const result = showError(); // μ—λŸ¬κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.
console.log(result); // undefined

 

3. ν•¨μˆ˜ ν•˜λ‚˜μ— μ—¬λŸ¬ 개의 return문이 올 μˆ˜λ„ μžˆλ‹€.

function checkAge(age) {
  if (age >= 18) {
      return true;
  } else {
      return false;
  }
}

console.log( checkAge(15) ) // false
console.log( checkAge(20) ) // true

 

 

4. return문은 λ°°μ—΄μ΄λ‚˜ 객체λ₯Ό ν¬ν•¨ν•œ λͺ¨λ“  νƒ€μž…μ˜ 값을 λ°˜ν™˜ν•  수 μžˆλ‹€.

 

πŸ‘©πŸ»‍πŸ’» 배열을 λ°˜ν™˜ν•˜λŠ” μ˜ˆμ‹œ

function getEvenNumbers(numbers) {
  let evenNumbers = [];

  for (let i = 0; i < numbers.length; i++) {
    if (numbers[i] % 2 === 0) {
      evenNumbers.push(numbers[i]);
    }
  }
  return evenNumbers;
}

let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let evenNumbers = getEvenNumbers(numbers);

console.log(evenNumbers); // [2, 4, 6, 8, 10]

 

πŸ‘©πŸ»‍πŸ’» 객체λ₯Ό λ°˜ν™˜ν•˜λŠ” μ˜ˆμ‹œ

function createPerson(name, age) {
  return {
    name: name,
    age: age,
    greet: function() {
      console.log("Hello, my name is " + this.name + " and I'm " + this.age + " years old.");
    }
  };
}

let person1 = createPerson("Hanna", 19);
let person2 = createPerson("Jane", 25);

person1.greet(); // "Hello, my name is Hanna and I'm 19 years old."
person2.greet(); // "Hello, my name is Jane and I'm 25 years old."

 

5. λ°˜ν™˜ν•˜λ €λŠ” 값이 κΈ΄ ν‘œν˜„μ‹μΈ 경우, ν‘œν˜„μ‹μ΄ return μ§€μ‹œμžκ°€ μžˆλŠ” μ€„μ—μ„œ μ‹œμž‘ν•˜λ„λ‘ μž‘μ„±ν•΄μ•Ό ν•œλ‹€.

 λ°˜ν™˜ν•˜λ €λŠ” 값이 κΈ΄ ν‘œν˜„μ‹μΈ 경우, returnκ³Ό λ°˜ν™˜ν•˜λ €λŠ” κ°’ 사이에 μƒˆ 쀄을 λ„£μ–΄ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ©΄ μ›ν•˜λŠ” 값을 얻지 λͺ»ν•œλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” returnλ¬Έ 끝에 μ„Έλ―Έμ½œλ‘ (;)을 μžλ™μœΌλ‘œ λ„£κΈ° λ•Œλ¬Έμ— ν‘œν˜„μ‹μ„ μ—¬λŸ¬ 쀄에 걸쳐 μž‘μ„±ν•˜κ³  μ‹Άλ‹€λ©΄ ν‘œν˜„μ‹μ΄ return μ§€μ‹œμžκ°€ μžˆλŠ” μ€„μ—μ„œ μ‹œμž‘ν•˜λ„λ‘ μž‘μ„±ν•΄μ•Ό ν•œλ‹€.

return // return; κ³Ό 같은 의미
 (some + long + expression + or + whatever * f(a) + f(b))

β¬‡οΈŽ // μ•„λž˜μ™€ 같이 μž‘μ„±ν•΄μ•Ό μ›ν•˜λŠ” 값을 얻을 수 μžˆλ‹€.

return (
  some + long + expression
  + or +
  whatever * f(a) + f(b)
)

 


✏️ κ³΅λΆ€ν•˜λ©° μ •λ¦¬ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. 잘λͺ»λœ μ •λ³΄λ‚˜ 더 κ³΅μœ ν•  λ‚΄μš©μ΄ 있으면 λŒ“κΈ€λ‘œ μ•Œλ €μ£Όμ„Έμš”!

μ½μ–΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€ 😊

 

λ°˜μ‘ν˜•