Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 285119
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 12, 20262026-05-12T05:31:03+00:00 2026-05-12T05:31:03+00:00

I was reading some posts about closures and saw this everywhere, but there is

  • 0

I was reading some posts about closures and saw this everywhere, but there is no clear explanation how it works – everytime I was just told to use it…:

// Create a new anonymous function, to use as a wrapper
(function(){
    // The variable that would, normally, be global
    var msg = "Thanks for visiting!";

    // Binding a new function to a global object
    window.onunload = function(){
        // Which uses the 'hidden' variable
        alert( msg );
    };
// Close off the anonymous function and execute it
})();

Ok I see that we will create new anonymous function and then execute it. So after that this simple code should work (and it does):

(function (msg){alert(msg)})('SO');

My question is what kind of magic happens here? I thought that when I wrote:

(function (msg){alert(msg)})

then a new unnamed function would be created like function “”(msg) …

but then why doesn’t this work?

(function (msg){alert(msg)});
('SO');

Why does it need to be in the same line?

Could you please point me some posts or give me an explanation?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-12T05:31:04+00:00Added an answer on May 12, 2026 at 5:31 am

    Drop the semicolon after the function definition.

    (function (msg){alert(msg)})
    ('SO');
    

    Above should work.

    DEMO Page: https://jsfiddle.net/e7ooeq6m/

    I have discussed this kind of pattern in this post:

    jQuery and $ questions

    EDIT:

    If you look at ECMA script specification, there are 3 ways you can define a function. (Page 98, Section 13 Function Definition)

    1. Using Function constructor

    var sum = new Function('a','b', 'return a + b;');
    alert(sum(10, 20)); //alerts 30
    

    2. Using Function declaration.

    function sum(a, b)
    {
        return a + b;
    }
    
    alert(sum(10, 10)); //Alerts 20;
    

    3. Function Expression

    var sum = function(a, b) { return a + b; }
    
    alert(sum(5, 5)); // alerts 10
    

    So you may ask, what’s the difference between declaration and expression?

    From ECMA Script specification:

    FunctionDeclaration :
    function Identifier ( FormalParameterListopt ){ FunctionBody
    }

    FunctionExpression :
    function Identifieropt ( FormalParameterListopt ){ FunctionBody
    }

    If you notice, ‘identifier’ is optional for function expression. And when you don’t give an identifier, you create an anonymous function. It doesn’t mean that you can’t specify an identifier.

    This means following is valid.

    var sum = function mySum(a, b) { return a + b; }
    

    Important point to note is that you can use ‘mySum’ only inside the mySum function body, not outside. See following example:

    var test1 = function test2() { alert(typeof test2); }
    
    alert(typeof(test2)); //alerts 'undefined', surprise! 
    
    test1(); //alerts 'function' because test2 is a function.
    

    Live Demo

    Compare this to

     function test1() { alert(typeof test1) };
    
     alert(typeof test1); //alerts 'function'
    
     test1(); //alerts 'function'
    

    Armed with this knowledge, let’s try to analyze your code.

    When you have code like,

        function(msg) { alert(msg); }
    

    You created a function expression. And you can execute this function expression by wrapping it inside parenthesis.

        (function(msg) { alert(msg); })('SO'); //alerts SO.
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I was reading some 3rd party code and I found this: x.Flags = x.Flags
I've always used a *.h file for my class definitions, but after reading some
I am new to web development and WCF. I am reading some basics about
Having read an existing post on stackoverflow and done some reading around on the
After reading some threads on misuses of exceptions (basically saying you don't want to
I'm reading some MPEG Transport Stream protocol over UDP and it has some funky
I'm reading some code in the Ogre3D implementation and I can't understand what a
I've been reading some tutorials on how to get started using Rails 2.0. (Time
I was reading some Java recently and came across something (an idiom?) new to
OK, So i have been watching some MVC vids and reading some bits. I

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.