• Почему без return function код не работает?

    @Faliah
    В данном случае вы получаете своего рода фабрику счётчиков. При каждом вызове makeCounter() возвращается ссылка на объект фунции, а не на её результат. Так же в данном примере используется замыкание, которое дает возвращаемой функции возможность обращаться к переменной currentCount, которая нахоится в родительской области видимости.
    function makeCounter() {
    
      var currentCount = 1;
    
      return function() {
        return currentCount++;
      };
    }
    
    var counter = makeCounter();
    var counter1 = makeCounter();
    
    console.log(counter()); //1
    console.log(counter()); //2
    // счётчики работают независимо друг от друга
    console.log(counter1()) //1


    Этот пример, конечно больше синтетический, зато охватывает несколько чрезвычайно важных концепций в JS, а именно: замыкания, области видимости, first-class function. First-class function, в свою очередь, означает ряд принципов, которым следуют абсолютно все функции, создаваемые в JS:
    • Каждая функция является объектом или экзмепляром объектоного типа (instance of Object type)
    • У функции могут быть свойства. К примеру запись makeCounter.foo = "bar", абсолютно валидна. Подобный подход используется для создания статических свойств функции
    • Ссылку на объект функции можно сохранить в переменной, а потом вызвать эту функцию. Как в вашем примереcounter()
    • Можно передавать функцию в качестве параметра в другую функцию
    • Функцию можно возвращать из другой функции, как в вашем примере


    Таким образом, хотя данная функция не несёт в себе сложной логики, но она иллюстрирует множество важнейших концепций, без знания которых будет очень тяжело понимать как работают многие бибилиотеки
    Ответ написан
    Комментировать
  • Как выбрать it направление?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Подкиньте монетку, или напишите все варианты на листике и поиграйте в дартс... Или напишите програмку которая генерит в рандоме вариант которым вы хотите заняться...

    Идею вы уловили. Либо решайте сами либо рандом. Это сугубо личное решение, зависит от вашего характера, склада ума и т.д. Да и пока не попробуете не узнаете.
    Ответ написан
    1 комментарий