๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ปSTUDY/JavaScript

[JavaScript] return / break

๋ฐ˜์‘ํ˜•

๐Ÿคฆ‍โ™€๏ธ

jQuery each() ํ•จ์ˆ˜๋ฅผ ๊ณต๋ถ€ํ•˜๋‹ค๊ฐ€ return false; ๊ฐ€ breaking ์•ˆ๋จ์„ ์•Œ์•˜๋‹ค.(eachํ•จ์ˆ˜์•ˆ์—์„œ ์กฐ๊ฑด๋ฌธ์— ๋งŒ์กฑํ•˜๋ฉด break ๊ฐ€ ๋˜์•ผ ํ•˜๋Š”๋ฐ ์•ˆ๋จ.) ์ฐพ์•„๋ณด๋ฉด์„œ return๊ณผ break์˜ ํ™•์‹คํ•œ ๊ฐœ๋…๋‹ค์ง‘๊ธฐ๊ฐ€ ํ•„์š”ํ–ˆ๊ณ , ํ›„์— each()๋ฅผ ํ™•์‹คํžˆ return false ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜๋‹ค.

return / break > return / return true / return false > $.each()  return false ํ•˜๋Š” ๋ฐฉ๋ฒ•

์ˆœ์œผ๋กœ ์ •๋ฆฌํ•ด๋ณผ ์˜ˆ์ •์ด๋‹ค.

 

 

[javaScript] return / break

1. return

  • ํ•จ์ˆ˜ ์‹คํ–‰์„ ์ข…๋ฃŒํ•˜๊ณ , ์ฃผ์–ด์ง„ ๊ฐ’์„ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ง€์ ์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
function getRectArea(width, height) {
  if(width > 0 && height > 0) {
    return width * height;
  }
  return 0;
}
console.log(getRectArea(3, 4));
// 12
console.log(getRectArea(-3,4));
// 0

 

1-1. ๊ตฌ๋ฌธ

return [[expression]]

expression : ๋ฐ˜ํ™˜ํ•  ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•  ํ‘œํ˜„์‹. ์ƒ๋žตํ•  ๊ฒฝ์šฐ undefined ๋ฅผ ๋Œ€์‹  ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

1-2. ์„ค๋ช…

ํ•จ์ˆ˜ ๋ณธ๋ฌธ์— return ๋ช…๋ น๋ฌธ์— ๋„๋‹ฌํ•˜๋ฉด ํ•จ์ˆ˜์˜ ์‹คํ–‰์€ ๊ทธ ์ง€์ ์—์„œ ์ค‘์ง€๋œ๋‹ค.

๊ฐ’์„ ์ œ๊ณตํ•œ ๊ฒฝ์šฐ, ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ๊ณณ์—์„œ ๊ทธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

// ์ˆซ์ž ๋งค๊ฐœ๋ณ€์ˆ˜ `x`์˜ ์ œ๊ณฑ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์˜ˆ์ œ์ด๋‹ค.
function square(x) {
  return x * x;
}
var demo = square(3);
// demo๋Š” 9

 

๋‹ค์Œ return ๋ช…๋ น๋ฌธ ๋ชจ๋‘ ํ•จ์ˆ˜ ์‹คํ–‰์„ ๋Š๋Š”๋‹ค.

๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜ ํ•จ์ˆ˜ ์‹คํ–‰์„ ์ค‘์ง€์‹œํ‚จ๋‹ค

return;
return true;
return false;
return x;
return x + y / 3;

 

1-3. ์˜ˆ์ œ

  • ํ•จ์ˆ˜์ค‘๋‹จ

    • ํ•จ์ˆ˜๋Š” return์„ ํ˜ธ์ถœํ•˜๋Š” ์ง€์ ์—์„œ ์ฆ‰์‹œ ์‹คํ–‰์„ ๋ฉˆ์ถ˜๋‹ค.
    function counter() {
      for(var count = 1; count++) { // ๋ฌดํ•œ๋ฐ˜๋ณต
        console.log(count + 'A'); // 1 2 3 4 5
        if(count === 5) {
          return; // ๋ฉˆ์ถค.
        } // (1) count === 5 END
        console.log(count + 'B'); // 1 2 3 4
      } // (2) for() END
      console.log(count + 'C'); // for๋ฌธ ๋๋‚ฌ์œผ๋ฏ€๋กœ ์ ˆ๋Œ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š”๋‹ค.
    } // (3) counter() END
    counter();
    
    // 1A
    // 1B
    // 2A
    // 2B
    // 3A
    // 3B
    // 4A
    // 4B
    // 5A
    

 


 

2. break

break๋ฌธ์€ ํ˜„์žฌ ๋ฐ˜๋ณต๋ฌธ, switch ๋ฌธ, label๋ฌธ์„ ์ข…๋ฃŒํ•˜๊ณ , ๊ทธ ๋‹ค์Œ ๋ฌธ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ ์ œ์–ด๋ฅผ ๋„˜๊ธด๋‹ค.

let i = 0;
while(i < 6) {
  if(i === 3) {
    break;
  }
  console.log(i); // 0 1 2
	i++;
  console.log(i); // 1 2 3
}

console.log(i); // 3

 

2-1. ๊ตฌ๋ฌธ

break [label];

label : ๋ฌธ์˜ ๋ผ๋ฒจ์— ์—ฐ๊ฒฐํ•œ ์‹๋ณ„์ž. ๋ฐ˜๋ณต๋ฌธ์ด๋‚˜ swich ์—์„œ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ฉด ํ•„์ˆ˜๋กœ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค.

 

2-2. ์„ค๋ช…

break๋ฌธ์€ ํ”„๋กœ๊ทธ๋žจ์ด label ๋‹ฌ๋ฆฐ ๋ฌธ์—์„œ ๋น ์ ธ๋‚˜์˜ค๊ฒŒ ํ•˜๋Š” ์„ ํƒ์‚ฌํ•ญ label์„ ํฌํ•จํ•œ๋‹ค. break๋ฌธ์€ ์ฐธ์กฐ๋˜๋Š” label ๋‚ด์— ์ค‘์ฒฉ๋˜์–ด์•ผ ํ•œ๋‹ค. label ๋‹ฌ๋ฆฐ ๋ฌธ์€ ์–ด๋–ค block๋ฌธ์ด๋“  ๋  ์ˆ˜ ์žˆ๋‹ค. ๊ผญ loop๋ฌธ์„ ๋‹ฌ ํ•„์š”๋Š” ์—†๋‹ค.

 

2-3. ์˜ˆ์ œ

  • ๋‹ค์Œ ํ•จ์ˆ˜๋Š” i๊ฐ€ 3์ผ ๋•Œ, while loop๋ฅผ ์ข…๋ฃŒํ•˜๋Š” break๋ฌธ์ด ์žˆ๊ณ , 3*x ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
function testBreak(x) {
  var i = 0;
  while(i < 6) {
    if(i === 3) {
      break;
    }
    i++;
    console.log(i); // 123
  }
  console.log(i); // 3
  return i * x; // 3 * 4
}
testBreak(4);

 

  • ๋‹ค์Œ ์ฝ”๋“œ๋Š” label ๋‹ฌ๋ฆฐ ๋ธ”๋ก์ด ์žˆ๋Š” break๋ฌธ์„ ์‚ฌ์šฉํ•œ๋‹ค. break๋ฌธ์€ ์ž์‹ ์ด ์ฐธ์กฐํ•˜๋Š” label ๋‚ด์— ์ค‘์ฒฉ๋˜์–ด์•ผ ํ•œ๋‹ค.

    inner_block์€ outer_block๋‚ด์— ์ค‘์ฒฉ๋˜์–ด์•ผ ํ•จ์„ ์ฃผ์˜ํ•˜์ž.

    outer_block: {
      inner_block: {
        console.log('1');
        break outer_block; // inner_block๊ณผ outer_block ๋‘˜๋‹ค ๋น ์ ธ๋‚˜์˜ด.
        console.log('2'); // ๊ฑด๋„ˆ๋œ€.
      }
      console.log('3'); // ๊ฑด๋„ˆ๋œ€.
    }
    

 

  • ๋‹ค์Œ ์ฝ”๋“œ๋Š” label ๋‹ฌ๋ฆฐ ๋ธ”๋ก๋ฌธ์— break ๋ฌธ์„ ์‚ฌ์šฉํ•œ ์˜ˆ์ œ๋กœ, break๋ฌธ์ด block_2๋ฅผ ์ฐธ์กฐํ•˜์ง€๋งŒ block_1 ๋‚ด์— ์žˆ๊ธฐ์— ๊ตฌ๋ฌธ ์˜ค๋ฅ˜(Syntax Error)๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. break๋ฌธ์€ ํ•ญ์ƒ ์ž์‹ ์ด ์ฐธ์กฐํ•˜๋Š” label๋‚ด์— ์ค‘์ฒฉ๋˜์–ด์•ผ ํ•œ๋‹ค.

    block_1: {
      console.log('1');
      break block_2; // SyntaxError : label์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ.
    }
    block_2: {
      console.log('2');
    }
    

 

  • label์— ๋Œ€ํ•œ ๋‚ด์šฉ

https://keichee.tistory.com/141

 


 

3. return ๊ณผ break ์ฐจ์ด

๋งŒ์•ฝ ํ•จ์ˆ˜ ์•ˆ์— ์ž‘์„ฑ๋œ ๋ฃจํ”„ ์•ˆ์— break๊ฐ€ ์“ฐ์˜€๋‹ค๋ฉด, break๋ฅผ ๊ฐ์‹ธ๊ณ  ์žˆ๋Š” ๋ฃจํ”„๋ฅผ ๋น ์ ธ ๋‚˜๊ฐ€๊ณ  ํ•จ์ˆ˜ ๋ฐ–์œผ๋กœ ๋‚˜๊ฐ€์ง€ ์•Š๋Š”๋‹ค.

return์€ ํ•จ์ˆ˜ ์‹คํ–‰์„ ์ข…๋ฃŒํ•˜๊ณ  ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ๊ณณ์œผ๋กœ ์‹คํ–‰ ํ๋ฆ„์„ ์˜ฎ๊ธด๋‹ค.

 

return = ํ•จ์ˆ˜ ํƒˆ์ถœ

  1. ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ๊ฐ’์„ ํ•จ์ˆ˜ ์™ธ๋ถ€๋กœ ์ถœ๋ ฅ์‹œํ‚ค๋Š” ๊ธฐ๋Šฅ.
  2. ํ•จ์ˆ˜๋ฅผ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒ์‹œํ‚ค๋Š” ๊ธฐ๋Šฅ. ํ•จ์ˆ˜ ์•ˆ์— ์“ฐ์ด๋ฉด ํ•จ์ˆ˜ ์‹คํ–‰์„ ์ข…๋ฃŒ์‹œํ‚ค๊ณ , ๊ทธ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ–ˆ๋˜ ์ง€์ ์œผ๋กœ ๋Œ์•„๊ฐ€ ๊ณ„์† ์‹คํ–‰ํ•œ๋‹ค.

break = ๋ฃจํ”„ ํƒˆ์ถœ

  1. for, switch, while ๋“ฑ ์—ฌ๋Ÿฌ๋ฒˆ ๋ฐ˜๋ณต๋˜๋Š” ๋ฃจํ”„์˜ ๊ฒฝ์šฐ, ํ•ด๋‹น ๋ฃจํ‘ธ์—์„œ ๋น ์ ธ๋‚˜๊ฐ„๋‹ค.

 

๐Ÿ”ฅ ์ค‘์š”! ๐Ÿ”ฅ

์ด ๋•Œ, return ๊ณผ ๊ตฌ๋ถ„๋˜๋Š” ์ฐจ์ด๋Š” ์–ด๋””์„œ ๋น ์ ธ๋‚˜๊ฐ€๋Š๋ƒ์ด๋‹ค.

return์˜ ๊ฒฝ์šฐ, ํ•ด๋‹น ๋ฉ”์„œ๋“œ(ํ•จ์ˆ˜) ์ž์ฒด์—์„œ ๋น ์ ธ๋‚˜๊ฐ€๊ณ , break๋Š” ํ•จ์ˆ˜ ์ž์ฒด์—์„œ ๋น ์ ธ๋‚˜๊ฐ€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ•จ์ˆ˜ ์•ˆ์— ์“ฐ์ธ ๋ฃจํ”„๋ฌธ์—์„œ๋งŒ ๋น ์ ธ๋‚˜๊ฐ„๋‹ค๋Š” ์ฐจ์ด์ ์ด ์žˆ๋‹ค.

 


 

Reference

return - MDN

break - MDN

return ๊ณผ break ์˜ ์ฐจ์ด

JavaScript์—์„œ return๊ณผ break์˜ ์ฐจ์ด

 

๋ฐ˜์‘ํ˜•