rubixibuc
rubixibuc

Reputation: 7397

Self invoking functions javascript

I wrote a self invoking function in both firefox and chrome it it wouldn't invoke.

I wrote something to the effect of

(function () { alert("THE"); })();

do self invoking functions not work in current browsers?

I did include all essential tags and all other code works on the page

Upvotes: 3

Views: 12839

Answers (6)

Gar9276
Gar9276

Reputation: 1

This self invoking function with return value will work in all current browsers(Safari, Chrome and Firefox) without issue. This function executes immediately, automatically and anonymously.

<script type="text/javascript">
    alert((function(){
        return("Hello World");
    })());
</script>

Upvotes: 0

ninjagecko
ninjagecko

Reputation: 91094

"Self-invoking functions" are not really a part of javascript, it's just a term that people are calling a specific pattern of code (like AJAX, etc.); these patterns should work anywhere that javascript works.

What you're calling a "self-invoking function" is just creating an anonymous function and immediately calling it (as opposed to say storing it in a var, as an object value, as a function param, etc.).

That is, the following are basically the same:

var f = function(){...}; f()

and

( function(){...} )()

So because your 'self-invoking function' is a basic part of javascript, there is no possible way it's not working unless the insides aren't working or your environment is messed up. You could copy-paste your code onto a new blank page, and it would work fine. Something else must be going wrong:

Check your errors in your dev console. Specifically, check to make sure you don't have a syntax error or that there isn't some weird thing going on with the webpage you're testing it on (e.g. if you somehow redefine alert...).

Upvotes: 10

call_de_amberlamps
call_de_amberlamps

Reputation: 419

This function definitely works. I would check your browser's console for any js errors in your page. Perhaps you could try to put a simple console.log function at the beginning of your script to see if any JavaScript is being called in the first place.

Upvotes: 0

chim
chim

Reputation: 8573

I had this issue with a self invoking function which produced this error...

Uncaught TypeError: object is not a function

The problem was caused by not having a semi colon ending the line before the opening bracket

Upvotes: 3

zellio
zellio

Reputation: 32484

<script type="text/javascript">
  (function() {
     alert('Hello World!');
  })();
</script>

Works in every browser I have installed on this machine.

Upvotes: 2

Paul
Paul

Reputation: 141829

That function works. Javascript supports functional programming, so for a browser not to run that code, even for a very old browser that would be absurd. Are you sure that statement is being reached? Try debugging javascript that occurs before that statement.

Upvotes: 2

Related Questions