Pass a JavaScript function as parameter

function, javascript, parameters

Solution

You just need to remove the parenthesis:

addContact(entityId, refreshContactList);

This then passes the function without executing it first.

Here is an example:

function addContact(id, refreshCallback) {
    refreshCallback();
    // You can also pass arguments if you need to
    // refreshCallback(id);
}

function refreshContactList() {
    alert('Hello World');
}

addContact(1, refreshContactList);

Problem

How do I pass a function as a parameter without the function executing in the "parent" function or using `eval()`? (Since I've read that it's insecure.) I have this: ``` addContact(entityId, refreshContactList()); ``` It works, but the problem is that `refreshContactList` fires when the function is called, rather than when it's used in the function. I could get around it using `eval()`, but it's not the best practice, according to what I've read. How can I pass a function as a parameter in JavaScript?

Original source

Related problems