Вызов из замыкания JS

263
28 сентября 2017, 16:31

Почему не выводится Alert? Понимаю, что замыкание, но почему не понятно. Как его вывести? Спасибо!

    var x = 10;
    function foo() {
        var y = 20;
        function bar() {
            var z = 15;
            var с = x + y + z;
            alert(c);
            return c;
        }
        return bar;
    }
    foo();
Answer 1

foo() возвращает функцию bar, foo()() - вызывает функцию bar:

var x = 10; 
function foo() { 
  var y = 20; 
  function bar() { 
    var z = 15; 
    var с = x + y + z; // в этой строчке использовано "с" из кириллицы 
    console.log(c);    // в этой строчке использовано латинское "c" 
    var c = x + y + z; // в этой строчке использовано латинское "c" 
    console.log(c);    // в этой строчке использовано латинское "c" 
    return c;          // в этой строчке использовано латинское "c" 
  } 
  return bar; 
} 
foo()();

Не называйте переменные буквами, которые выглядят одинаково в латинском и русском шрифтах.

READ ALSO
Как работает функция — обертка в этом случаи?

Как работает функция — обертка в этом случаи?

Дело в том, что когда пытаются обратиться к примитиву как к объекту, то он оборачивается в свою функцию - обертку, и в следствии получает объект,...

300
Запуск SPA на Android

Запуск SPA на Android

Добрый день! Имеется одностраничное приложение js, css, html, мы его запускаем на винде в хроме с флагами – получается терминал-киоскСтоит задача...

249
animate scroll top перестал работать в Chrome в версии 61.x

animate scroll top перестал работать в Chrome в версии 61.x

Здравствуйте, есть простая функция скролла вниз:

421
Запуск внутренней функции

Запуск внутренней функции

Почему, не выводится alert если мы запускаем функцию extFunc()?

244