Во втором примере числа возвращены правильно, но они не отображаются в консоли.
Это потому, что return
не записывать что-нибудь. return
является частью языка, а не инструментом отладчика.
Когда вы return
что-то, это значение возвращается вызывающей стороне и позволяет ему выполнять больше операций со значением, например, выполнять математические вычисления, сохранение в переменную, переход к другим функциям, вызов (например, как вы это делали в случае функции, возвращенной из callTimes()
) ...
Итак, чтобы увидеть эти значения в консоли, запишите их после того, как они ' повторно возвращено:
function callTimes() {
let count = 0;
return function inner(){
count++;
return count //<--Return instead of logging
}
return inner
}
let myNewFunc1 = callTimes();
let myNewFunc2 = callTimes();
//Log the returned values
console.log(myNewFunc1()); // => 1
console.log(myNewFunc1()); // => 2
console.log(myNewFunc2()); // => 1
console.log(myNewFunc2()); // => 2