Ответы пользователя по тегу JavaScript
  • Почему во внешней функции аргументы недоступны, а во внутренней - доступны?

    ivanshumakov
    @ivanshumakov
    Делаю свои первые шаги в мире IT
    Переменные a и b объявлены в самой внутренней функции и они являются свойствами лексического окружения (Lexical Environment) именно этой функции и видны только внутри нее (снаружи не видны).
    Если бы переменные были бы заданы внутри функции с помощью var то это были бы свойства глобального объекта (в браузере window) и были бы доступны всюду, но в вашем случае это не так.
    Если бы вы сказали для чего они вам там нужны, помочь вам стало бы возможным.
    PS Вот так вот будет видно везде:
    // и даже здесь
    function byField(field) {
      // теперь c и d доступны здесь (раз уж это вам так надо)
      return function(a, b) { 
        var c = a, d = b;
        return a[field] > b[field] ? 1 : -1;
      }
    }

    Только правильнее было бы поступить так:
    var compareByField = byField('num');
    numbers.sort(compareByField(a, b));
    Ответ написан
    6 комментариев