• Зачем нужен блок инструкций без управляющей инструкции?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Любой блок создает лексическую область видимости (переменные объявленные с помощью let и const видны только в пределах своего блока).

    Очень похоже, что такой код уже обработан какими либо инструментами.
    Допустим в исходном коде было что-то вроде:
    var currentExtraStackFrame = null;
    function setExtraStackFrame(stack) {
      if (process.env.NODE_ENV === 'production') {
        currentExtraStackFrame = stack;
      }
    }
    В процессе сборки process.env.NODE_ENV было заменено на 'production', а так как 'production' === 'production' - это всегда истинное условие, то от if можно избавиться, оставив только его тело, вот только от блока при этом инструменты не избавляются, так как можно сломать видимость переменных.
    Ответ написан
    Комментировать
  • Зачем нужен блок инструкций без управляющей инструкции?

    @alexalexes
    var currentExtraStackFrame = null; // это нужно, чтобы не словить предупреждение в консоль undefined variable/property при обращении к свойству currentExtraStackFrame
    // этим методом вы задаете какое-то значение для свойства currentExtraStackFrame, если его нужно привести в какое-то не null значение (или вернуть в null - значение по умолчанию).
    function setExtraStackFrame(stack)
    {
      // if() тут может была лексема if, можно просто ее закомментить и не убирать скобки, чтобы git не анализировать их исправление, и так будет работать
      {
        currentExtraStackFrame = stack;
      }
    }
    Ответ написан
    2 комментария
  • Зачем нужен блок инструкций без управляющей инструкции?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    В изначальных исходниках там TypeScript. Вы смотрите уже скомпилированный код. В исходниках местами все обернуто в разные условия, завязанные на__DEV__:
    export function setExtraStackFrame(stack: null | string): void {
      if (__DEV__) {
        currentExtraStackFrame = stack;
      }
    }

    Когда происходила сборка кода, который вы смотрите, вероятно __DEV__ был true, условие было опущено, т.к. оно всегда выполняется, а скобки остались как артефакт. Скорее всего транспилятор TS не проверяет весь контекст, и чтобы ничего не сломать случайно, оставляет скобки на своих местах.
    Ответ написан
    2 комментария
  • Как пробросить SSH на сервер без внешнего ip?

    ValdikSS
    @ValdikSS
    Установите VPN-подключение между серверами, это самый простой вариант.
    Ответ написан
    Комментировать
  • Как пробросить SSH на сервер без внешнего ip?

    @SunTechnik
    1.Вариант колхозный:
    С сервера делается ssh сессия с реверс туннелем.
    Автоизация по ключам. В зависмости от параметров туннеля - зайти сожно или только с vds или с любого адреса.
    2. Продвинутые: на vds поднять vpn сервер. Ваша сервер подключается по vpn к vds.
    Админ заходит по ssh на vds, c него - на Ваш сервер. Или в iptables повесить редирект какого-нибудь порта на ip сервера.

    В целом - вариантов много можно предложить. Админу можно заходитьпо ssh на vds?
    Ответ написан
    3 комментария
  • Почему нет цикличных референсов в обявлении Enum?

    Jacen11
    @Jacen11
    тебя ждет боль
    https://habr.com/ru/company/sberbank/blog/416413/
    вот одна из статей. В основном проблемы от совместимости, в джаве дженерики не сразу появились, поэтому потом пришлось изварачиваться
    Ответ написан
    Комментировать
  • Литерал объекта и блок инструкций. Есть ли связь?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Усы похожие, даже идентичные. Но по смыслу ничего общего.

    Литерал объекта это выражение, значение которого как-то используется, куда-то передаётся.

    А блок инструкций сам по себе или со всякими do {} while () и if (condition) {}

    В общем, вроде бы, различия однозначны и коллизий не возникает:
    function foo() {}; // пустой блок
    foo({}); // передали пустой объект аргументом
    
    {} // пустой блок инструкций
    ({}) // отдельно висящий никому не нужный пустой объект
    
    [{}] // создали массив с пустым объектом
    {[]} // внутри блока создали пустой массив и забыли про него
    «Умные» редакторы кода подсвечивают усы разными цветами и ругаются на бессмысленность  бытия  пустых блоков и неиспользуемых выражений.
    как это выглядит
    6378cb1e939e9216154366.png
    Ответ написан
    Комментировать