On Sat, Jan 15, 2011 at 11:27 PM, Michael Haufe (TNO)
<[email protected]> wrote:
> #1 - function(){ WScript.Echo("foo") }();
> #2 - (function(){ WScript.Echo("foo") }());
> #3 - (function(){ WScript.Echo("foo") })();
>
> #1 is an error. #2 and #3 both work.
>
> If I type "foo" or if I type ("foo") they are semantically the same
> thing. same as if I type 1 vs (1), etc.
> The fact that "function(){}()" and "( function(){}() )"  are not
> semantically the same seems a bit backwards logically.
>
> Hence I prefer style #3
>

I prefer style #3 too, mostly because I believe the components (FD and
Expression) are better grouped and separated.

--
Diego


> On Jan 15, 1:30 pm, Bill Heaton <[email protected]> wrote:
>> I am curious if anyone can give me insight why the nesting of the function 
>> to be immediately invoked should be completely contained within parenthesis 
>> ( // func  () ); versus parenthesis + parenthesis ( // func )();
>>
>> I do not get why the parenthesis (and arguments if needed) would be better 
>> placed just inside the final closing parenthesis ')'
>>
>> Below is the typical pattern that I use, following the pattern of jQuery's 
>> source...
>>
>> (function($) {
>>         $.fn.pluginName = function(options) {
>>                 var defaults = { elem : 'body' },
>>                         opts = $.extend({}, defaults, options);
>>
>>                 return this.each(function() {
>>                         // logic and return here
>>                 });
>>         };
>>
>> })(this.jQuery);
>>
>> When testing the short template above with jslint.com I get this error...
>>
>> Error:
>> Problem at line 10 character 3: Move the invocation into the parens that 
>> contain the function.
>>
>> })(this.jQuery);
>>
>> My options using jslint.com were : /*jslint onevar: true, browser: true */
>>
>> +-------------+
>>
>> I did review the "IIFE" article by Cowboy at 
>> :http://benalman.com/news/2010/11/immediately-invoked-function-express...and 
>> noticed that he writes ...
>>
>> (function(){ /* code */ })(); // I've been using this one
>> (function(){ /* code */ }()); // Crockford recommends this one
>>
>> +-------------+
>>
>> It seems that this would be better in the opinion of Crockford's 
>> (jslint.com) syntax validation
>>
>> (function($) {
>>         $.fn.pluginName = function(options) {
>>                 var defaults = { elem : 'body' },
>>                         opts = $.extend({}, defaults, options);
>>
>>                 return this.each(function() {
>>                         // logic and return here
>>                 });
>>         };
>>
>> }(this.jQuery));
>>
>> +-------------+
>>
>> So, is the pattern for immediately invoked function better :
>>
>> (function( window ) {
>>     var self = window;
>>     return self.location.host;
>>
>> }( window ));
>>
>> In jQuery source I find this pattern
>>
>> (function( window ) {
>>     var self = window;
>>     return self.location.host;
>>
>> })( window );
>>
>> +-------------+
>>
>> On another topic, I just quit my day job to go back to full-time contracting 
>> and look forward to the opportunity to discuss Javascript here in this group.
>>
>> Thanks in advance for your thoughts on the topic of IIFE and placement of 
>> the parenthesis.
>>
>> Best regards,
>>
>> -Bill Heaton
>> @pixelhandler
>
> --
> 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