mak_ufo
@mak_ufo

Почему такие странные вещи с областью видимости?

Здравствуйте. Код такой:
switch (data) {
        case 'buy': //как купить BTC
            const keys = message.buy.key[lng];
            keys.chat_id = msg.message.chat.id;
            keys.message_id = msg.message.message_id;
            bot.editMessageText(message.buy.text[lng], keys);
        break;

        case 'sell': //как продать BTC
            const keys = message.sell.key[lng];
            bot.editMessageText(message.sell.text[lng], keys);
        break;
    }

И в консоли вижу неожиданное:
c7f39935a0c2404e815954820450e5a5.png

Почему вообще компилятор ругается на переменную keys в блоке sell? Если я не определяю её и пытаюсь передать в bot.editMessageText, то консоль говорит: keys is not defined.

В чём ошибка?
З. Ы. В других местах программы переменная keys не встречатся. Переменные message и lng корректны и доступны в обоих блоках
  • Вопрос задан
  • 190 просмотров
Решения вопроса 2
bingo347
@bingo347 Куратор тега Node.js
Crazy on performance...
У Вас 2 раза объявление const keys внутри одного блока (весь switch является одним блоком)
можно обернуть каждый case в свой блок, тогда будет работать
Ответ написан
@Nick8
Просто обернуть каждый case в свой блок
switch (data) {
        case 'buy': //как купить BTC
            {
                const keys = message.buy.key[lng];
                keys.chat_id = msg.message.chat.id;
                keys.message_id = msg.message.message_id;
                bot.editMessageText(message.buy.text[lng], keys);
                break;
            }

        case 'sell': //как продать BTC
            {
                const keys = message.sell.key[lng];
                bot.editMessageText(message.sell.text[lng], keys);
                break;
            }
    }


Ну и пиши default - никогда не знаешь, кто будет поддерживать твой код и как он может использовать твои конструкции :)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы