Передача функции по ссылке означает, что вы передаете не результат выполнения функции, а саму функцию как объект. Это позволяет вам вызывать эту функцию в другой части программы, возможно, в другом контексте или с другими аргументами. Рассмотрим более подробно, что это значит и какие возможности это предоставляет.
Определение функции: Вы создаете функцию и сохраняете ее в переменной или объявляете ее прямо в качестве аргумента.
function greet(name) {
return `Hello, ${name}!`;
}
Передача функции по ссылке: Вы передаете функцию как аргумент другой функции или сохраняете ее в другой переменной.
function executeFunction(fn, arg) {
return fn(arg);
}
const result = executeFunction(greet, 'Alice');
console.log(result); // "Hello, Alice!"
В этом примере функция
greet
передается по ссылке в функцию executeFunction
, которая затем вызывает greet
с аргументом Alice
.function add(x) {
return function(y) {
return x + y;
};
}
const addFive = add(5);
console.log(addFive(3)); // 8
function fetchData(callback) {
setTimeout(() => {
const data = { name: 'Alice' };
callback(data);
}, 1000);
}
function handleData(data) {
console.log(`Received data: ${data.name}`);
}
fetchData(handleData);
map
, filter
, reduce
, принимают функции в качестве аргументов для обработки элементов массива.const numbers = [1, 2, 3, 4, 5];
const squared = numbers.map(num => num * num);
console.log(squared); // [1, 4, 9, 16, 25]
this
) может измениться. Это особенно актуально для методов объектов.const person = {
name: 'Alice',
greet() {
console.log(`Hello, ${this.name}`);
}
};
const greet = person.greet;
greet(); // undefined, так как контекст потерян
const boundGreet = person.greet.bind(person);
boundGreet(); // Hello, Alice
function createCounter() {
let count = 0;
return function() {
count++;
return count;
};
}
const counter = createCounter();
console.log(counter()); // 1
console.log(counter()); // 2
Ставь 👍 и забирай 📚 Базу знаний