Sunday 19 May 2019

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?



Answer



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

No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...