Yes there is. You could also use a "+" or "-" operator to do what the "!" is
doing, but make no mistake it isn't precisely the same thing as wrapping the
function in parentheses. The operators that do this are forcing the function
to express instead of declare (an unnamed, undeclared function is illegal),
they are doing it by coercing the function to express itself (someone
smarter than me will tell you why * and / don't work, but my guess is that
they don't coerce the same way as the operators listed above). Back to the
point at hand. If you used the ! operator to immediately invoke a function
and assigned the returned value of that function to a variable, that value
would be coerced into a boolean and reversed (ie 0 would become true, and
true would become false, false would become true, etc). Similarly the plus
operator would coerce the value into a string or number (there's not telling
which). The parentheses will NOT ever coerce the value of the returned
function.

var g = !function(){
       return true;
}
//g equals false now.
var g = (function(){
      return true;
})();
//g equals true.

Hope that helps.
-Nate

On Wed, May 11, 2011 at 3:00 PM, tibolan <[email protected]> wrote:

> Hi,
>
> I was just reading the source code of a script, and i found a strange
> implementation:
>
> !function (){
>  //
> }()
>
> After some test, it seems to do the same thing than:
>
> (function (){
>  //
> })();
>
> is there another difference between this two way of doing the same
> thing, if we set aside the saving of 1 char :D ?
>
>
> --
> To view archived discussions from the original JSMentors Mailman list:
> http://www.mail-archive.com/[email protected]/
>
> To search via a non-Google archive, visit here:
> http://www.mail-archive.com/[email protected]/
>
> To unsubscribe from this group, send email to
> [email protected]
>

-- 
To view archived discussions from the original JSMentors Mailman list: 
http://www.mail-archive.com/[email protected]/

To search via a non-Google archive, visit here: 
http://www.mail-archive.com/[email protected]/

To unsubscribe from this group, send email to
[email protected]

Reply via email to