This question already has a nice answer from Amit joki
I had read a comment below his answer there the questioner was said that he need more explanation that's why i am posting this answer .
First Case:
var myVar = !function(){ return false; }( );
alert(myVar);
Here myVar is an anonymous function and through the below code it calls itself.
var myVar = !function(){ return false; }( );
That is it, is a self executing anonymous function!
.
a !function() Using the ! operator before the function causes it to
be treated as an expression, so we can call it:
So when we try to alert(myvar);
then it will alert the return value of the myVar function . Already the myVar function return a false and the ! symbol in our code will convert it to true
So it will return true
Think our code is something like below
var myVar = function(){ return 10; }( );
it will also alert true. Because in javascript only false, NaN, null, undefined, 0 , "" are false and other all are truth.
and when the above code changes to
var myVar = !function(){ return 10; }( );
then it will alert false because the statement return 10 is true in javascript and it will converted to false by ! operator
Then in second case :
var myVar = !function(){return true};
alert(myVarz);
Here is no self executing anonymous function. only an anonymous function definition is here. When we try alert(myVar)
myVar is now a function, which is truthy because in javascript only false, NaN, null, undefined, 0 , "" are false and other all are truthy.!!!
And here also ! comes in frond of function like !function(){return true}; soit will convert the true to false.
Reference1 ,
Reference2