8.1 ๋ธ”๋ก๋ฌธ

๋ธ”๋ก๋ฌธ์€ 0๊ฐœ ์ด์ƒ์˜ ๋ฌธ์„ ์ค‘๊ด„ํ˜ธ๋กœ ๋ฌถ์€ ๊ฒƒ์œผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ๋ธ”๋ก๋ฌธ์„ ํ•˜๋‚˜์˜ ์‹คํ–‰๋‹จ์œ„๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค.

  // ๋ธ”๋ก๋ฌธ
  {
      var foo = 10;
  }

  // ์ œ์–ด๋ฌธ
  var x = 1;
  if (x < 10) {
      x++;
  }

  // ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ
  function sum(a, b) {
      return a + b;
  }

8.2 ์กฐ๊ฑด๋ฌธ

์กฐ๊ฑด๋ฌธ์€ ์ฃผ์–ด์ง„ ์กฐ๊ฑด์‹์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์ฝ”๋“œ ๋ธ”๋ก์˜ ์‹คํ–‰์„ ๊ฒฐ์ •ํ•œ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” if-else๋ฌธ๊ณผ switch ๋ฌธ ๋‘๊ฐ€์ง€ ์กฐ๊ฑด๋ฌธ์„ ์ œ๊ณตํ•œ๋‹ค.

8.2.1 if-else๋ฌธ

์กฐ๊ฑด์‹์˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ ์ฝ”๋“œ ๋ธ”๋ก์„ ๋Š˜๋ฆฌ๊ณ  else if๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ๋˜ํ•œ ๋Œ€๋ถ€๋ถ„์˜ if-else๋ฌธ์€ ์‚ผํ•ญ ์กฐ๊ฑด ์—ฐ์‚ฐ์ž๋กœ ๋ฐ”๊พธ์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  var num = 2;
  var kind;

  // if ๋ฌธ
  if(num > 0) {
      kind = '์–‘์ˆ˜';      // ์Œ์ˆ˜๋ฅผ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์—†๋‹ค.
  }
  console.log(kind);      // ์–‘์ˆ˜

  // if...else ๋ฌธ
  if(num > 0) {
      kind = '์–‘์ˆ˜';    
  }
  else {
      kind = '์Œ์ˆ˜';      // 0์€ ์Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค.
  }
  console.log(kind);      // ์–‘์ˆ˜

  // if...else if ๋ฌธ
  if(num > 0) {
      kind = '์–‘์ˆ˜';    
  }
  else if(num < 0){
      kind = '์Œ์ˆ˜';      // 0์€ ์Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค.
  }
  else {
      kind = '์˜';
  }
  console.log(kind);      // ์–‘์ˆ˜

8.2.2 switch๋ฌธ

switch๋ฌธ์€ ์ฃผ์–ด์ง„ ํ‘œํ˜„์‹์„ ํ‰๊ฐ€ํ•˜์—ฌ ๊ทธ ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋Š” ํ‘œํ˜„์‹์„ ๊ฐ–๋Š” case ๋ฌธ์œผ๋กœ ์‹คํ–‰ ํ๋ฆ„์„ ์˜ฎ๊ธด๋‹ค. switch๋ฌธ์˜ ํ‘œํ˜„์‹๊ณผ ์ผ์น˜ํ•˜๋Š” case๋ฌธ์ด ์—†๋‹ค๋ฉด default ๋ฌธ์œผ๋กœ ์ด๋™ํ•œ๋‹ค. default ๋ฌธ์—์„œ break๋ฌธ์„ ์ƒ๋žตํ•˜๋Š”๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค.

  // ์›”์„ ์˜์–ด๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. (11 -> 'November')
  var month = 2;
  var monthName;

  switch(month) {
      case 1: monthNAme = 'January';
          break;
      case 2: monthNAme = 'February';
          break;
      case 3: monthNAme = 'March';
          break;
      case 4: monthNAme = 'April';
          break;
      case 5: monthNAme = 'May';
          break;  
      case 6: monthNAme = 'June';
          break;  
      case 7: monthNAme = 'July';
          break;  
      case 8: monthNAme = 'August';
          break;  
      case 9: monthNAme = 'September';
          break;  
      case 10: monthNAme = 'October';
          break;  
      case 11: monthNAme = 'November';
          break;  
      case 12: monthNAme = 'December';
          break;  
      default: monthName = "Invalid month"
  }
  console.log(monthName);     // February;

๐Ÿง ํด ์Šค๋ฃจ(fall through) ๋ž€?

switch ๋ฌธ์„ ํƒˆ์ถœํ•˜์ง€ ์•Š๊ณ  switch๋ฌธ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๋ชจ๋“  case ๋ฌธ๊ณผ default ๋ฌธ์„ ์‹คํ–‰๋˜๋Š”๊ฒƒ์„ ๋œปํ•œ๋‹ค. ์•„๋ž˜ ์˜ˆ์ œ์—์„œ๋Š” monthName ๋ณ€์ˆ˜์— ๊ฐ’์ด ๊ณ„์† ์žฌํ• ๋‹น๋˜์–ด Invalid month๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค

// ์›”์„ ์˜์–ด๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. (11 -> 'November')
var month = 2;
var monthName;
switch(month) {
    case 1: monthNAme = 'January';
    case 2: monthNAme = 'February';
    case 3: monthNAme = 'March';
    case 4: monthNAme = 'April';
    case 5: monthNAme = 'May';
    case 6: monthNAme = 'June';
    case 7: monthNAme = 'July';
    case 8: monthNAme = 'August';
    case 9: monthNAme = 'September';
    case 10: monthNAme = 'October';
    case 11: monthNAme = 'November';
    case 12: monthNAme = 'December';
    default: monthName = "Invalid month"
}
console.log(monthName);     // Invaild month

8.3 ๋ฐ˜๋ณต๋ฌธ

๋ฐ˜๋ณต๋ฌธ์€ ์กฐ๊ฑด์‹์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ์ธ ๊ฒฝ์šฐ ์ฝ”๋“œ ๋ธ”๋ก์„ ์‹คํ–‰ํ•œ๋‹ค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์„ธ๊ฐ€์ง€ ๋ฐ˜๋ณต๋ฌธ์ธ for ๋ฌธ, while ๋ฌธ, do-while ๋ฌธ์„ ์ œ๊ณตํ•œ๋‹ค.

8.3.1 for ๋ฌธ

for ๋ฌธ์€ ์กฐ๊ฑด์‹์ด ๊ฑฐ์ง“์œผ๋กœ ํ‰๊ฐ€๋  ๋•Œ๊นŒ์ง€ ์ฝ”๋“œ ๋ธ”๋ก์„ ๋ฐ˜๋ณต ์‹คํ–‰ํ•œ๋‹ค. for ๋ฌธ์˜ ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ, ์กฐ๊ฑด์‹, ์ฆ๊ฐ์‹์€ ๋ชจ๋‘ ์˜ต์…˜์ด๋ฏ€๋กœ ๋ฐ˜๋“œ์‹œ ์‚ฌ์šฉํ•  ํ•„์š”๋Š” ์—†๋‹ค. for๋ฌธ์˜ ์‹คํ–‰์ˆœ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • for ๋ฌธ์„ ์‹คํ–‰ํ•˜๋ฉด ๋งจ ๋จผ์ € ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ var i = 0 ์ด ์‹คํ–‰๋œ๋‹ค. ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์€ ๋‹จ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰๋œ๋‹ค.

  • ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์˜ ์‹คํ–‰์ด ์ข…๋ฃŒ๋˜๋ฉด ์กฐ๊ฑด์‹์ด ์‹คํ–‰๋œ๋‹ค. ํ˜„์žฌ i ๋ณ€์ˆ˜์˜ ๊ฐ’์€ 0์ด๋ฏ€๋กœ ์กฐ๊ฑด์‹์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๋Š” true์ด๋‹ค.

  • ์กฐ๊ฑด์‹์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๊ฐ€ true์ด๋ฏ€๋กœ ์ฝ”๋“œ ๋ธ”๋ก์ด ์‹คํ–‰๋œ๋‹ค. ์ฆ๊ฐ๋ฌธ์œผ๋กœ ์‹คํ–‰ ํ๋ฆ„์ด ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ฝ”๋“œ ๋ธ”๋ก์œผ๋กœ ์‹คํ–‰ ํ๋ฆ„์ด ์ด๋™ํ•˜๋Š” ๊ฒƒ์— ์ฃผ์˜ํ•˜์ž.

  • ์ฝ”๋“œ ๋ธ”๋ก์˜ ์‹คํ–‰์ด ์ข…๋ฃŒ๋˜๋ฉด ์ฆ๊ฐ์‹ i++๊ฐ€ ์‹คํ–‰๋˜์–ด i ๋ณ€์ˆ˜์˜ ๊ฐ’์€ 1์ด ๋œ๋‹ค.

  • ์ฆ๊ฐ์‹ ์‹คํ–‰์ด ์ข…๋ฃŒ๋˜๋ฉด ๋‹ค์‹œ ์กฐ๊ฑด์‹์ด ์‹คํ–‰๋œ๋‹ค. ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์ด ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์กฐ๊ฑด์‹์ด ์‹คํ–‰๋œ๋‹ค๋Š” ์ ์— ์ฃผ์˜ํ•˜์ž. (์•ž์—์„œ ์„ค๋ช…ํ–ˆ์ง€๋งŒ ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์€ ๋‹จ ํ•œ๋ฒˆ๋งŒ ์‹คํ–‰๋œ๋‹ค. ํ˜„์žฌ i ๋ณ€์ˆ˜์˜ ๊ฐ’์€ 1์ด๋ฏ€๋กœ ์กฐ๊ฑด์‹์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๋Š” true์ด๋‹ค.)

  • ์กฐ๊ฑด์‹์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๊ฐ€ true ์ด๋ฏ€๋กœ ์ฝ”๋“œ ๋ธ”๋ก์ด ๋‹ค์‹œ ์‹คํ–‰๋œ๋‹ค.

  • ์ฝ”๋“œ ๋ธ”๋ก์˜ ์‹คํ–‰์ด ์ข…๋ฃŒ๋˜๋ฉด ์ฆ๊ฐ์‹ i++๊ฐ€ ์‹คํ–‰๋˜์–ด i๋ณ€์ˆ˜์˜ ๊ฐ’์€ 2๊ฐ€ ๋œ๋‹ค.

  • ์ฆ๊ฐ์‹ ์‹คํ–‰์ด ์ข…๋ฃŒ๋˜๋ฉด ๋‹ค์‹œ ์กฐ๊ฑด์‹์ด ์‹คํ–‰๋œ๋‹ค. ํ˜„์žฌ i ๋ณ€์ˆ˜์˜ ๊ฐ’์€ 2์ด๋ฏ€๋กœ ์กฐ๊ฑด์‹์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๋Š” false๋‹ค. ์กฐ๊ฑด์‹์˜ ํ‰๊ฐ€๊ฒฐ๊ณผ๊ฐ€ false์ด๋ฏ€๋กœ for๋ฌธ์˜ ์‹คํ–‰์ด ์ข…๋ฃŒ๋œ๋‹ค.

8.3.2 while ๋ฌธ

while ๋ฌธ์€ ์ฃผ์–ด์ง„ ์กฐ๊ฑด์‹์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ์ด๋ฉด ์ฝ”๋“œ ๋ธ”๋ก์„ ๊ณ„์†ํ•ด์„œ ๋ฐ˜๋ณต ์‹คํ–‰ํ•œ๋‹ค. for ๋ฌธ์€ ๋ฐ˜๋ณต ํšŸ์ˆ˜๊ฐ€ ๋ช…ํ™•ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  while ๋ฌธ์€ ๋ฐ˜๋ณต ํšŸ์ˆ˜๊ฐ€ ๋ถˆ๋ช…ํ™•ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

8.3.3 do-while ๋ฌธ

do-while ๋ฌธ์€ ์ฝ”๋“œ ๋ธ”๋ก์„ ๋จผ์ € ์‹คํ–‰ํ•˜๊ณ  ์กฐ๊ฑด์‹์„ ํ‰๊ฐ€ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ฝ”๋“œ ๋ธ”๋ก์€ ๋ฌด์กฐ๊ฑด ํ•œ ๋ฒˆ ์ด์ƒ ์‹คํ–‰๋œ๋‹ค.


8.4 break ๋ฌธ

break ๋ฌธ์€ ๋ ˆ์ด๋ธ” ๋ฌธ, ๋ฐ˜๋ณต๋ฌธ ๋˜๋Š” switch ๋ฌธ์˜ ์ฝ”๋“œ ๋ธ”๋ก์„ ํƒˆ์ถœํ•œ๋‹ค. ๋ ˆ์ด๋ธ” ๋ฌธ์ด๋ž€ ์‹๋ณ„์ž๊ฐ€ ๋ถ™์€ ๋ฌธ์„ ๋งํ•œ๋‹ค.

  // outer ๋ผ๋Š” ์‹๋ณ„์ž๊ฐ€ ๋ถ™์€ ๋ ˆ์ด๋ธ” for ๋ฌธ
  outer: for(var i = 0; i < 3; i++){
    for(var j = 0; j < 3; j++) {
      // i + j === 3์ด๋ฉด outer๋ผ๋Š” ์‹๋ณ„์ž๊ฐ€ ๋ถ™์€ ๋ ˆ์ด๋ธ” for ๋ฌธ์„ ํƒˆ์ถœํ•œ๋‹ค.
      if(i+j === 3) break outer;
      console.log(`inner [${i}, ${j}]`);
    }
  }

  console.log('Done!');

์œ„ ์ฝ”๋“œ์ฒ˜๋Ÿผ ๋ ˆ์ด๋ธ” ๋ฌธ์€ ์ค‘์ฒฉ๋œ for๋ฌธ ์™ธ๋ถ€๋กœ ํƒˆ์ถœํ•  ๋•Œ ์œ ์šฉํ•˜์ง€๋งŒ ๊ทธ ๋ฐ–์˜ ๊ฒฝ์šฐ์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ ˆ์ด๋ธ”๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„์ด ๋ณต์žกํ•ด์ ธ์„œ ๊ฐ€๋…์„ฑ์ด ๋‚˜๋น ์ง€๊ณ  ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์ง„๋‹ค.

8.5 continue ๋ฌธ

continue ๋ฌธ์€ ๋ฐ˜๋ณต๋ฌธ์˜ ์ฝ”๋“œ ๋ธ”๋ก์„ ํ˜„ ์ง€์ ์—์„œ ์ค‘๋‹จํ•˜๊ณ  ๋ฐ˜๋ณต๋ฌธ์˜ ์ฆ๊ฐ์‹์œผ๋กœ ์‹คํ–‰ ํ๋ฆ„์„ ์ด๋™์‹œํ‚จ๋‹ค.

  var string = 'Hello world';
  var search = 'l';
  var count = 0;

  // ๋ฌธ์ž์—ด์€ ์œ ์‚ฌ ๋ฐฐ์—ด์ด๋ฏ€๋กœ for ๋ฌธ์œผ๋กœ ์ˆœํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
  for(var i = 0; i < string.length; i++){
    // 'l' ์ด ์•„๋‹ˆ๋ฉด ํ˜„ ์ง€์ ์—์„œ ์‹คํ–‰์„ ์ค‘๋‹จํ•˜๊ณ  ๋ฐ˜๋ณต๋ฌธ์˜ ์ฆ๊ฐ์‹์œผ๋กœ ์ด๋™ํ•œ๋‹ค.
    if(string[i] !== search) continue;
    count++;
  }
  console.log(count); // 3

  // ์ฐธ๊ณ ๋กœ String.prototype.match ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๊ฐ™์€ ๋™์ž‘์„ ํ•œ๋‹ค.
  const regexp = new RegExp(search, 'g');
  console.log(string.match(regexp).length);  // 3
profile
์ด์‚ฌ์ค‘์ž…๋‹ˆ๋‹ค!๐ŸŒŸhttps://velog.io/@devkyoung2

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด