タグ付けされた質問 「anonymous-function」

匿名関数はコードのブロックを値として使用し、名前のないインライン関数として定義します。

19
なぜ同じ行で無名関数を呼び出す必要があるのですか?
私は閉鎖についてのいくつかの投稿を読んでいて、これをどこでも見ましたが、それがどのように機能するのか明確な説明はありません-私はちょうどそれを使用するように言われたたびに...: // 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 ); }; // …

10
カプセル化された無名関数の構文を説明する
概要 JavaScriptでカプセル化された匿名関数の構文の背後にある理由を説明できますか?なぜこれは機能します(function(){})();が、機能しませんfunction(){}();か? 私が知っていること JavaScriptでは、次のような名前付き関数を作成します。 function twoPlusTwo(){ alert(2 + 2); } twoPlusTwo(); 無名関数を作成して変数に割り当てることもできます。 var twoPlusTwo = function(){ alert(2 + 2); }; twoPlusTwo(); 匿名関数を作成し、それを角かっこで囲んですぐに実行することで、コードブロックをカプセル化できます。 (function(){ alert(2 + 2); })(); これは、GreasemonkeyスクリプトやjQueryプラグインなどのように、変数が競合する可能性がある現在のスコープやグローバルスコープが乱雑になるのを避けるために、モジュール化されたスクリプトを作成するときに役立ちます。 今、私はこれがなぜ機能するのか理解しています。角かっこはコンテンツを囲み、結果のみを公開します(それを説明するためのより良い方法があると確信しています)(2 + 2) === 4。 わからないこと しかし、なぜこれも同様に機能しないのか理解できません。 function(){ alert(2 + 2); }(); それを説明してもらえますか?

6
匿名の再帰的なPHP関数
再帰的かつ匿名のPHP関数を持つことは可能ですか?これは機能させるための私の試みですが、関数名を渡しません。 $factorial = function( $n ) use ( $factorial ) { if( $n <= 1 ) return 1; return $factorial( $n - 1 ) * $n; }; print $factorial( 5 ); これは階乗を実装するための悪い方法であることも知っています。これは単なる例です。

19
javascript:再帰的な匿名関数?
基本的な再帰関数があるとしましょう: function recur(data) { data = data+1; var nothing = function() { recur(data); } nothing(); } 次のような匿名関数がある場合、どうすればこれを実行できますか? (function(data){ data = data+1; var nothing = function() { //Something here that calls the function? } nothing(); })(); この関数を呼び出した関数を呼び出す方法が欲しい...呼び出された関数の名前を教えてくれるスクリプトがどこか(どこにあるか思い出せない)を見たことがありますが、どれも思い出せませんその情報今。

4
匿名のJavaScript関数を自動実行するための括弧の場所は?
最近、json2.jsの現在のバージョンとプロジェクト内のバージョンを比較していたところ、関数式の作成方法と自己実行方法に違いがありました。 匿名関数を括弧で囲んで実行するためのコード、 (function () { // code here })(); しかし現在は、自動実行される関数を括弧で囲んでいます。 (function () { // code here }()); Explain JavaScriptのカプセル化された匿名関数構文の受け入れられた回答にCMSによるコメントがあり、「両方:(function(){})();かつ(function(){}());有効です」。 違いは何だろうと思っていましたか?前者はグローバルな匿名関数を残してメモリを消費しますか?括弧はどこに置くべきですか?

13
JavaScriptの無名関数に対するremoveEventListener
その中にメソッドを持つオブジェクトがあります。これらのメソッドは、無名関数内のオブジェクトに配置されます。次のようになります。 var t = {}; window.document.addEventListener("keydown", function(e) { t.scroll = function(x, y) { window.scrollBy(x, y); }; t.scrollTo = function(x, y) { window.scrollTo(x, y); }; }); (もっと多くのコードがありますが、これは問題を示すのに十分です) 次に、イベントリスナーを停止したい場合があります。したがって、私はremoveEventListenerを実行しようとしていますが、これを行う方法を理解できません。他の質問で、匿名関数でremoveEventListenerを呼び出すことは不可能であると読みましたが、これはこの状況の場合にも当てはまりますか? 無名関数内に作成されたメソッドがあり、それが可能だと思いました。このように見えます: t.disable = function() { window.document.removeEventListener("keydown", this, false); } なぜこれができないのですか? これを行う他の(良い)方法はありますか? ボーナス情報; これはSafariでのみ機能する必要があるため、IEサポートがありません。


5
名前付き関数式を使用する理由
JavaScriptで関数式を実行するには、2つの異なる方法があります。 名前付き関数式(NFE): var boo = function boo () { alert(1); }; 無名関数式: var boo = function () { alert(1); }; そして、どちらもで呼び出すことができますboo();。なぜ/いつ匿名関数を使用する必要があるのか​​、いつ名前付き関数式を使用するべきなのか、本当にわかりません。それらの間にはどのような違いがありますか?

5
php is_function()は、変数が関数かどうかを判別します
phpの無名関数について読むと、とても興奮しました。これにより、create_functionで行うよりも簡単な関数である変数を宣言できます。変数が渡される関数があるかどうか疑問に思っていますが、関数かどうかを確認するにはどうすればよいですか?is_function()関数はまだありません。関数である変数のvar_dumpを実行すると、次のようになります。 $func = function(){ echo 'asdf'; }; var_dump($func); 私はこれを手に入れます: object(Closure)#8 (0) { } これが関数かどうかを確認する方法について何か考えはありますか?



5
5.4.0より前のPHPの無名関数で `$ this`を使用する
PHPマニュアルには 使用できません $thisPHP5.4.0より前の無名関数 上の匿名関数のページ。しかし$this、変数に割り当てて変数をに渡すことで、それを機能させることができることがわかりました。use関数定義のステートメントに。 $CI = $this; $callback = function () use ($CI) { $CI->public_method(); }; これは良い習慣ですか?PHP 5.3を使用して無名関数内 にアクセスするためのより良い方法はあり$thisますか?

3
匿名関数の省略形
短い表記#(..)を使用した無名関数について私が理解できないことがあります 次の作品: REPL> ((fn [s] s) "Eh") "Eh" しかし、これはしません: REPL> (#(%) "Eh") これは機能します: REPL> (#(str %) "Eh") "Eh" 私が理解していないのは、(#(%) "Eh")が機能せず、同時にstr in ((fn [s] s) "Eh")を使用する必要がない理由です。 これらは両方とも無名関数であり、ここでは両方とも1つのパラメーターを取ります。速記表記には関数が必要なのに、他の表記には必要ないのはなぜですか?

3
strictを使用しているときに、匿名関数の「this」が未定義なのはなぜですか?
strictモードでjavascriptを使用しているときに、匿名関数でこれが未定義なのはなぜですか?これが理にかなっている理由は理解できますが、具体的な答えは見つかりませんでした。 例: (function () { "use strict"; this.foo = "bar"; // *this* is undefined, why? }()); フィドルでテストする:http://jsfiddle.net/Pyr5g/1/ ロガー(firebug)をチェックしてください。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.