Search code examples
javascriptfunctionparameters

Pass a JavaScript function as parameter


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?


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);