The first, of course, uses an anonymous function to capture a function executed after a timeout.
The second uses eval() to evaluate your string, which is likely to be slower than the first option (do not read the arguments why using eval() is bad).
The third shows the element for 5 seconds and then hides as soon as it is completed, therefore it differs from the first.
UPDATE:
Update
nickf prompted me to look at the source, and number 3 will execute immediately if the item is already visible. Here are the relevant lines of source code
if ( prop[p] == "hide" && hidden || prop[p] == "show" && !hidden ) return opt.complete.call(this);
source share