Как скрыть переменную от соседней функции

Перенесите secret внутрь замыкания, из которого возвращается только a. Изменение var на let в той же общей области само по себе не скроет переменную от b.

Короткий ответ

Что ответить на собеседовании

Перенесите secret внутрь замыкания, из которого возвращается только a. Изменение var на let в той же общей области само по себе не скроет переменную от b.

Подробный разбор

Ответ с пояснениями

Условие

В одном модуле объявлены const secret = 42; function a(){ return secret; } function b(){ return secret; }. Нужно оставить доступ a и убрать лексический доступ b. Как изменить область видимости?

Ответ

Перенесите secret внутрь замыкания, из которого возвращается только a. Изменение var на let в той же общей области само по себе не скроет переменную от b.

Например:

const a = (() => {
  const secret = 42;
  return () => secret;
})();
function b() {
  return typeof secret;
}

Теперь a возвращает 42, а b — строку undefined, если внешней переменной secret нет. Это инкапсуляция программы, а не защита секретов от пользователя, контролирующего клиентский JavaScript.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее