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 6962731
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 27, 20262026-05-27T15:41:54+00:00 2026-05-27T15:41:54+00:00

I’ve seen: !function(){ //code }(); Used in several places to immediately execute an anonymous

  • 0

I’ve seen:

!function(){ //code }();

Used in several places to immediately execute an anonymous function. Normally, it’s used in lieu of:

(function(){ //code }())

Anyone know how the ! actually makes the function execute?

  • 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-27T15:41:55+00:00Added an answer on May 27, 2026 at 3:41 pm

    What the ! does

    When you use !, the function becomes the single operand of the unary (logical) NOT operator.

    This forces the function to be evaluated as an expression, which allows it to be invoked immediately inline.


    Other alternatives

    You can do this with just about any operator. Here are some examples…

    'invoke',function(){ /*code*/ }();
    1+function(){ /*code*/ }();
    void function(){ /*code*/ }();
    ~function(){ /*code*/ }();
    +function(){ /*code*/ }();
    

    Nice thing about some of these is that the meaning of the operator is not overloaded.


    The problem with ()

    When you use () around the function, you can hit some bugs that will crop up if you have more than one in a row without a semicolon separating them.

    (function() {
        alert('first');
    }())
    
    
    (function() {
        alert('second');
    }())
    
    // TypeError: undefined is not a function
    

    This will result in a TypeError, because the pair of outer () around the second function will be interpreted as intending to call a function. The first one doesn’t return a function of course, so you’re trying to call on undefined.


    How using a different operator copes with (or avoids) the problem

    Even an operator like +, which is overloaded to some degree won’t cause an error.

    If you do this…

    +function() {
        alert('first');
    }()
    
    +function() {
        alert('second');
    }()
    

    The first + is interpreted as a unary + operator, and it converts the result returned from the first function, which in this case is undefined so it gets converted to NaN.

    The second + will be interpreted as the addition operator, and so will try to add NaN to the return result of the second function, which again here is undefined.

    The result of course is NaN, but it is harmless. There’s no illegal code to throw an error.


    Demonstration of how the operators interact with the functions

    To prove this, just give each function a return value, then paste it into the console…

    +function() {
        alert('first');
        return "10";
    }()
    
    +function() {
        alert('second');
        return 20;
    }()
    
    // 30
    

    You’ll get the two alerts, and then the console will show 30 because the first + operator converts the String "10" to the Number 10, and the second + added the two results together.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a string like this: La Torre Eiffel paragonata all’Everest What PHP function
Does anyone know how can I replace this 2 symbol below from the string
link Im having trouble converting the html entites into html characters, (&# 8217;) i
I used javascript for loading a picture on my website depending on which small
I'm parsing an RSS feed that has an ’ in it. SimpleXML turns this
I have this code: - (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock { NSString *someString = [[NSString
I need a function that will clean a strings' special characters. I do NOT
I want to construct a data frame in an Rcpp function, but when I
I have this code to decode numeric html entities to the UTF8 equivalent character.
I ran into a problem. Wrote the following code snippet: teksti = teksti.Trim() teksti

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.