1

Is there a better way to write this code? i tried function(){}(); but i got an error so i had to use DUMMY as a placeholder var. The function should run before alert b does. Whats a better way of writing this?

var DUMMY = function(){
    var names = "i dont want to be seen";
    alert('A');
}; DUMMY();

alert('B');
1
  • @Amnon: Nothing. I put it to make it more clear for certain people who may notice both alerts and understand i desire the function to be ran before that line. Commented Jun 18, 2010 at 3:31

3 Answers 3

4

I actually use the syntax you say doesn't work all the time. The thing is, you need to either store the return value, or make it an expression. So either:

var foo = function() { return false; }();

or

(function() { return false; }());

Note the difference between Pointy's answer on this one. The expression is the entire function (including the calling ()), not just the function declaration. Either way will do the same thing. Use what you feel is more readable (Personally I like this syntax better, but to each their own)...

Sign up to request clarification or add additional context in comments.

Comments

3

You can use parentheses to make it look like an expression:

(function() { alert("hi"); })();

I recently saw this (at the TXJS conference):

!function() { alert("hi"); }();

The leading "!" serves the same purpose: the parser sees an expression instead of a function definition statement.

2 Comments

Nice hack! In fact, you can use any unary operator. So maybe void function() { alert("hi"); }() is a little bit less confusing.
Well yes that works, but in all honesty that's the first time I've ever seen "void" used in Javascript, and I've been doing this for a while :-) Confusion is in the mind of the beholder!
2

For now the best is

(()=>{})()

or even

!()=>{}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.