Видимость let в теле switch case? [дубликат]

122
18 ноября 2019, 01:30

На данный вопрос уже ответили:

  • Всплывают ли переменные, объявленные с помощью let и const в ES6? 1 ответ

Есть следующая конструкция:

switch(val) {
    case '1':
        let sign = bar
        return ...
    case '2':
        let sign = foo
        return ...
}

При срабатывании этого кода вылетает ошибка

SyntaxError: Identifier 'sign' has already been declared

Почему? Что, если я не хочу, чтобы переменная sign создавалась в каждом кейсе?

Answer 1

Директива let позволяет объявить локальную переменную с областью видимости, ограниченной текущим блоком кода (MDN)

Блок инструкций (или сложная инструкция в других языках) используется для группировки нуля или более инструкций. Блок отделяется парой фигурных скобок (MDN)

function fn(val) { 
  switch (val) { 
    case '1': 
      { 
        let sign = 'bar'; 
        return sign; 
      } 
    case '2': 
      { 
        let sign = 'foo'; 
        return sign; 
      } 
  } 
} 
console.log(fn('2')); 
 
function fn2(val) { 
  let sign; 
  switch (val) { 
    case '1': 
      sign = 'bar'; 
      return sign; 
    case '2': 
      sign = 'foo'; 
      return sign; 
  } 
} 
console.log(fn2('1'));

READ ALSO
Возврат из slice() пустого массива

Возврат из slice() пустого массива

Доброе время суток,столкнулся казалось бы с очень простой ситуацией: Получить из массива под массивКод таков:

97
Highstock и websocket

Highstock и websocket

Использую react, библиотеку highcharts-react-official и highstock и обновление данных по websocketПервые пару минут все работает как часы

115
NODEJS - You have an error in your SQL syntax

NODEJS - You have an error in your SQL syntax

'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'desc) VALUES (\'Haunted Candleer\', \'fWFc82js0fmoRAP-qOIPu5THSWqfSmTELLqcUywGkijVj\' at line 1',

123
mysqldump не экспортирует данные

mysqldump не экспортирует данные

Делаю бекапы подобным методом, создан bat-файл с командой

97