На данный вопрос уже ответили:
Заметил интересный момент, хотелось бы узнать почему так происходит.
Вот пример номер 1:
var people = {
1:{name:'Вася'},
2:{name:'Петя'},
3:{name:'Сережа'},
};
let key = 1;
if(key==1)
{
let man = people[key];
console.log(man);
}
else if(key==2){
let man = people[key];
console.log(man);
}
else
{
let man = people[key];
console.log(man);
}
Результатом будет { name: 'Вася' }
. Это правильно и хорошо, меня полностью устраивает результат.
Пример 2:
var people = {
1:{name:'Вася'},
2:{name:'Петя'},
3:{name:'Сережа'},
};
let key = 1;
switch(key) {
case 1:
let man = people[key];
console.log(man);
break;
case 2:
let man = people[key];
console.log(man);
break;
default:
let man = people[key];
console.log(man);
break;
}
Как на мой взгляд, результат должен быть тот же, не чего существенно не изменилось, но результатом будет ошибка нечто вроде - Identifier 'man' has already been declared
.
Почему так?)
Я делаю предположение что разница кроется на этапе компиляции, и switch case в отличии от if else заглядывает во все свои case, и исполняет код только в нужном случае, и вот в тот момент когда заглядывает, находит ошибку в синтаксисе, так как получается что несколько let переменных объявляются друг за другом... Как то так вообщем.
Какие Ваши мысли по этому поводу?
Потому что, нужно создавать области действия через фугурные скобки ({}
), тогда переменная man
будет существовать только в пределах своей области.
Попробуйте:
var people = {
1:{name:'Вася'},
2:{name:'Петя'},
3:{name:'Сережа'},
};
let key = 1;
switch(key) {
case 1: {
let man = people[key];
console.log(man);
break;
}
case 2: {
let man = people[key];
console.log(man);
break;
}
default: {
let man = people[key];
console.log(man);
}
}
нужно чтобы после нажатия на кнопку "создать таблицу", создавалась таблица со всеми настройками которые ввел пользователь
Знаете ли вы, как можно отправить ответ из Google sheets в телеграм?