Question: why do I have to do this:

```
$('#myfoo').change(function(){mylongfunc();});

```

instead of this:

```
$('#myfoo').change(mylongfunc());

```

what does that extra function(){} wrapper do?

Answer: 
You don't need the wrapper function, just a little tweak to your approach, like this:

```
$('#myfoo').change(mylongfunc);

```

The `function() {}` is just an anonymous function, you can use a named function directly like you want, just pass the function.

```
mylongfunc //passes the function
mylongfunc() //passes the RESULT of the function

```
This uses an "anonymous" function.

```
$('#myfoo').change(function(){mylongfunc();});

```

This uses a pre-defined, reusable function. **Note:** I removed the `()` from `mylongfunc`

```
$('#myfoo').change(mylongfunc);

```

---

### The basic rule is this:

Use anonymous functions when they're only going to be used once.

Use regular functions when they're going to be used more than once (or shared by other code).