В функции с объявленной пустой переменной как оператор switch автоматически присваивает свое возвращаемое значение пустой переменной? - PullRequest
0 голосов
/ 03 мая 2019

все. Я довольно новичок в JavaScript - в настоящее время пытаюсь понять оператор switch. У меня проблемы с пониманием того, как я все еще получаю возвращаемое значение, когда я не присваиваю свою переменную result. Оператор switch вложен в функцию.

function caseInSwitch(val) {
  let result = "";
  switch(val) {
    case 1:
      return "alpha";
      break;
    case 2:
      return "beta";
      break;
    case 3:
      return "gamma";
      break;
    case 4:
      return "delta";
      break;
  }

  return result;  
}

caseInSwitch(1);

Я ожидаю, что result будет пустой строкой "", но она сразу показывает следующее значение ... без каких-либо присвоений ...!

Ответы [ 2 ]

1 голос
/ 03 мая 2019

Вы return входите в оператор switch. В случае, когда val равно 1, оператор switch никогда не проходит мимо случая 1. Функция не return result, она выполняет return "alpha".

Этот оператор возврата завершает функцию:

function caseInSwitch(val) {
  console.log("1: function start. Val:", val);

  let result = "";
  
  console.log("2: before switch");
  switch(val) {
    case 1:
      console.log("3: before return alpha");
      return "alpha";
      console.log("4: after return alpha");
      break;
    case 2:
      return "beta";
      break;
    case 3:
      return "gamma";
      break;
    case 4:
      return "delta";
      break;
  }
  console.log("5: after switch");

  return result;  
}

var finalResult = caseInSwitch(1);
console.log("Final result:", finalResult);

Как видите, только операторы 1-3 регистрируются.

Оператор return в коммутаторе также означает, что break s являются избыточными:

switch(val) {
    case 1:
        return "alpha";
    case 2:
        return "beta";
    case 3:
        return "gamma";
    case 4:
        return "delta";
}

Эти break заявления необходимы только для прекращения дела, если вы не возвращаетесь из дела:

let variable = "";
switch(val) {
    case 1:
        variable = "alpha";
        break;
    case 2:
        variable = "beta";
        break;
    case 3:
        variable = "gamma";
        break;
    case 4:
        variable = "delta";
        break;
}
console.log(variable);
0 голосов
/ 03 мая 2019

Ответ довольно прост, вы передаете 1 в качестве значения для val в случае CaseInSwitch. В блоке переключателей 1 соответствует случаю 1, и функция возвращает альфа. Имейте в виду, что возврат в блоке переключателей возвращает управление из самой функции, а не только из блока переключателей

...