2011-07-16 50 views
4

呼び出し元でないfirefoxとchromeの両方で自己呼び出し関数を書きました。自己呼び出し関数javascript

私は自己呼び出し関数は、現在のブラウザでは動作しません

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

の効果に何かを書きましたか?

はあなたに

編集ありがとう:私はすべての必須のタグが含まれなかったし、他のすべてのコードは、作品を機能ページ

+1

「自己呼び出し」?どういう意味ですか?btw、それはクロムで動作します – DanC

+1

あなたはページへのリンクを持っていますか?そのコードは機能します。もしあなたがそれを 'alert(" THE ");と置き換えれば、何の機能もありません。アラートは実行されますか?私はそうは思わない。 – Paulpro

+1

コードのこの部分は完璧に動作します。周囲のコードを表示します。エラーを生成する他のJavaScriptがないことを確認してください(FirebugまたはChromeのコンソールを確認できます)。 –

答えて

8

「自己呼び出し機能」は実際にはJavaScriptの一部ではなく、人々がAJAXなどの特定のコードパターンを呼び出すという単なる用語です。これらのパターンは、javascriptが動作する場所であればどこでも動作するはずです。

「自己呼び出し関数」と呼ぶのは、匿名関数を作成して直ちに呼び出すことです(varに格納する、オブジェクト値として保存する、関数のパラメータとして保存するなどとは異なります) 。以下である

は、基本的に同じである:あなたの自己を呼び出す関数は「JavaScriptの基本的な部分があるので

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

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

だから、何の可能な方法はありません内部が機能していないか、環境が乱れていない限り動作しません。新しい空白のページにコードをコピーして貼り付けても問題ありません。他の何かが間違っている必要があります:

あなたのdevコンソールでエラーをチェックしてください。具体的には、構文エラーがないこと、またはテストしているWebページで奇妙なことが起こっていないことを確認してください(たとえば、何らかの形でalert ...を再定義するなど)。私はこのエラーを生成し、自己呼び出し機能を使用してこの問題を持っていた

+2

問題は正しいですか?構文エラーがあったのですが、暗黙的なセミコロン。それは解析エラーを引き起こしました – rubixibuc

+0

https://jsfiddle.net/axd5d3y8/ – ServAce85

2

に取り組んでいます。 Javascriptは関数型プログラミングをサポートしているので、たとえ非常に古いブラウザであっても、そのコードを実行しないブラウザにとっては不条理です。その声明に達していると確信していますか?その文の前にあるjavascriptをデバッグしてみてください。

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

このマシンにインストールしたすべてのブラウザで動作します。

4

...

Uncaught TypeError: object is not a function 

問題は、開口部ブラケット

+0

ええ、私は同じエラーがあった、セミコロンとボイルを追加しました。 – Antoine

0

この関数の前に行を終了セミコロンを持っていないことで引き起こされました間違いなく動作します。私はあなたのページのjsエラーがないかブラウザのコンソールをチェックします。おそらく、スクリプトの最初に単純なconsole.log関数を入れて、JavaScriptが最初に呼び出されているかどうかを調べることができます。

0

戻り値を持つこの自己呼び出し関数は、現在のすべてのブラウザ(Safari、Chrome、Firefox)で問題なく動作します。この機能は、即座に、自動的に、匿名で実行されます。お役に立てれば。

<script type="text/javascript"> 
     alert((function(){ 
      return("Hello World"); 
     })()); 
     </script> 
関連する問題