Локална променлива брояч в JavaScript
Разгледайте следния код:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
test()(); // ще изведе 1
test()(); // ще изведе 1
Защо винаги ще се извежда число 1? За да
разберем това, нека пренапишем кода
по различен начин:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
};
let func1 = test(); //!! първа функция
func1(); //ще изведе 1
let func2 = test(); //!! втора функция
func2(); //ще изведе 1
Тоест всяко извикване на функцията test
по този начин: test()(), създава своя
функция със свое затваряне и незабавно извиква
тази функция.
Определете, без да стартирате кода, какво ще се изведе в конзолата:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
func()();
func()();
func()();
Определете, без да стартирате кода, какво ще се изведе в конзолата:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
let test = func;
test()();
test()();
test()();