2012-02-02 12 views

答えて

1

匿名関数は名前を持たないものです。たとえば、あなたが行うことができます:

(function(){ alert("Hello World!") })(); 

は、これは名前のない関数を作成し、すぐにそれを呼び出します。コードによって例外が発生した場合、JavaScriptランタイムは無名関数でエラーを報告します。

また、関数自体は、Functionというクラスのオブジェクトです。あなたは(代わりに内蔵された構文の)このような新しい機能を定義するには、このクラスを使用することができます。

(new Function("x", "y", "return x+y"))(1, 2); 

これはかなり書き込みと同じです:

(function(x, y) { return x + y })(1, 2); 

これはあなたにのぞき見を与えますJavaScriptの機能のオブジェクト指向の性質に変わります。

0

匿名関数は名前のない関数です。彼らは、JavaScriptに固有のものではありません、JSのためにhttp://en.wikipedia.org/wiki/Anonymous_function

を参照して、基本的にはなく、この:あなたが行うことができます

function myFunc() { } 

var myFunc = function() { } 
+0

-1質問をもう一度見てください。コンソールからの 'function anonymous(){'に関する質問が表示されます。スクリーンショットOPが含まれています。 – Tadeck

1

あなたがあるFunction()関数(コールFunctionオブジェクトのコンストラクタ)、関数を返します。そのように動的に作成された関数には名前がないので、名前には "anonymous"という名前が付けられます。

参照:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function

1

それはFunction.prototype.toStringの複数のブラウザの実装がFunctionコンストラクタで作成した関数をレンダリングする方法で気まぐれですが、それは重要ではありません、それはECMAScript仕様のいずれかのバージョンでは表示されません。通常

という名前の関数

function anonymous(x) { 
    if (x) { 
    alert('hi'); 
    } else { 
    anonymous(!x); 
    } 
} 

ますalertかかわらず、渡された値の、関数の名前を再帰的に(モジュロIEのバグを)それを呼び出すために使用することができ、それはの場合ではありませんので、 new Functionによって作成されたanonymous

(new Function('x', 'if (x) alert("hi"); else anonymous(!x);'))(false) 

はエラーで失敗します。

+0

+1 *「それは変わったことです...重要ではなく、EcmaScript仕様のどのバージョンにも現れません」*。 'Function();匿名(); // ReferenceError' –

関連する問題