Tim Ferrell
Tim Ferrell

Reputation: 1366

How to pass and call a function as an argument in Javascript?

I'm looking to pass an anonymous function to another function, but it doesn't seem to be working as I'd like.

I've attached the code, I think it'd give you a better idea what I'd to do.

How do I successfully pass a function as an argument, and then invoke it?

<script language="javascript" type="text/javascript">
function do_work(success) {
    success;
}

do_work(function () {
    alert("hello")
});

</script>

Upvotes: 7

Views: 1452

Answers (2)

mexique1
mexique1

Reputation: 1693

The variable success is an "instance" of Function, so you can also call apply(), that will allow you to redefine the scope :

function do_work(success) {
    var foo = {
       bar : "bat"          
    }
    success.apply(foo);
}

do_work(function () {
 alert(this.bar)
});

Upvotes: 0

Marcel Korpel
Marcel Korpel

Reputation: 21763

You have to actually call the function:

function do_work(success) {
    success();
}

Upvotes: 14

Related Questions