問題タブ [iife]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 高度な JavaScript: この関数が括弧で囲まれているのはなぜですか?
この JavaScript コードに出くわしましたが、それから何を作成すればよいかわかりません。このコードを実行すると「1」になるのはなぜですか? (1) のこの奇妙な小さな付録は何ですか? 関数が括弧で囲まれているのはなぜですか?
javascript - 即時呼び出し関数式の何が問題になっていますか?
私は以下の非常に単純なIIFEを実行しようとしましたが、
結果として、スクリプトが「定義済み」ではなく「未定義」と警告するのはなぜですか?
@編集
スクリプトは、次の点を除いて期待どおりに機能しました。
- 意図しない
typeof obj.prop === undefined
ものは間違っていますが、obj.prop === undefined
代わりに使用する必要があります。 以下の括弧を省略すると、スクリプトは期待どおりに機能しませんが、rhinoから構文エラーは発生しません。
function(_obj) {_obj.prop = 'defined';}(obj);
javascript - Java JVM/Rhino 64k バイトコード制限に収まるように IIFE を分割する方法
可能な限り jQuery に近い構文を使用して、Rhino を介してサーバー側のスクリプトを実行できるようにしたいと考えています。理想的には、サーバーで jQuery を使用したいだけです。
現在、Rhino + Env.js + jQuery は機能しますが、最適化がオンになっていない場合 ( http://bugs.sun.com/view_bug.do?bug_id=4262078cx.setOptimizationLevel(-1);
のために実行する必要があります) 解釈された JS は、ツールの適用性を大幅に制限します。書いています。
自分でやろうとする前に、JavaScript の達人に、きちんとカプセル化された jQuery のコア (および同じスタイルで書かれた jQuery プラグインのいくつか) を分割する最良の方法は何かを尋ねたいと思います。つまり、次のような関数を分割する方法
機能的なチャンクに。
必要なのは、関数の一部を、実行後に同じ機能を持つ呼び出し可能なコードに分割することだけです。
javascript - Object.PrototypeメソッドとIIFE(即時呼び出し関数式)での「厳密な使用」
元のコード:
新しいコード:
このコードが立っているように、私が試みるとき:
var gitjs = new GitJs();
GitJsは未定義だと言われています
私が何を考えていたのか:
use strict
すべてのメソッドの中に入れたくありません。- コードが縮小されて別のファイルに連結された場合に、コードを適切に再生したいと思います。
.prototype
後で継承しやすくするために(そしてコードを明確にするために)構文を使用したいvar gitJs
グローバル変数は他の誰かのスクリプトによって上書きされる可能性があるため、作成したくありません。new
ユーザーは常にキーワードを介してオブジェクトコンストラクターを呼び出すと思います
記録のために、私は私が間違っていることを知っています。間違っています。私は自分の思考の欠陥がどこにあるのか理解できないようで、いくつかのガイダンスが欲しいです。
jquery - $ の代わりに iife で $ と jQuery を理解する
次の間に違いがあるかどうかを理解しようとしています:
対。
jQuery が $ に置き換えられていることに注意してください。これでよろしいですか?使えないからどこも使わないの?動作しますが、おそらく非標準ですか?それがエラーなのか、それとも大丈夫なのか、誰かがこれを説明してもらえますか? ありがとう
javascript - IIFEを使用して割り当てられるようにカスタムバインディングハンドラーを変更する
カスタムバインディングハンドラーがあり、IIFEに変更したいと思います。私はインターネットでIIFEについて読んでいますが、カスタムハンドルをIIFEに変更する方法がわかりませんでした。では、次のバインディングハンドラーをIIFEに変更するにはどうすればよいですか?
javascript - 匿名関数呼び出しでNOT演算子を使用するのはなぜですか?(ノックアウト2.1.0)
重複の可能性:
感嘆符は関数の前に何をしますか?
KnockoutJS 2.1.0のソースコードを見ると、7行目から次のようなコード構造が見られます。
not演算子を使用すると、この式はtrue
ではなくに評価されundefined
ますが、なぜわざわざするのでしょうか。
javascript - いくつかのGreasemonkeyスクリプトの上部にあるこの行は何ですか?
背景: 私はC ++の独学の趣味レベルの理解を持っており、これはjavascriptの同様の理解に変換されています。javascriptをよりよく理解するために、Googleが同じドメインからの複数の結果を処理する方法の問題を解決するGreasemonkeyスクリプトを作成することにしました。
スクリプトを書いたのですが、驚くほど簡単でした。このスクリプトは他の人にも役立つと思うので、リリースしたいと思います。ただし、その前に、無責任なコードをリリースしていないことを確認したいと思います。
拡張機能の問題としてガベージコレクションが不十分であることがよくあることを知っており、それを防ぐためにjavascriptで何をする必要があるかについて調査しました。答えは、関数にラップされているメモリは、その関数が終了したときに再利用されるということのようです。これは、私が見たいくつかの人気のあるスクリプトが、他の方法では役に立たない関数にラップされた理由を説明しているようです。
これは私をこれらの質問に導きます:
- 基本的なJavaScript関数を使用して、メモリがリークしないようにするにはどうすればよいですか?
これは、私が多くのスクリプトで見た答えです。
/li>上記のコードで、最初の括弧の目的は何ですか?それは私には冗長に思えます。
その行を理解しようとしていたときに、次のように書き直しました。
/li>
これは、以前は名前が付けられていなかった関数を呼び出すだけであるという考えです。しかし、これはうまくいきませんでした、なぜですか?
私は一般的な答えにもっと興味があります、しかしそれが必要な場合のためにここに私の現在のコードがあります:http: //pastebin.com/qQWKfnJT
javascript - IIFE 内の 'this' | ローカルスコープと同じ?
IIFE がある場合、これはローカル スコープを参照しますか?
Su.$a
IIFE のどこでも利用できるようにする必要があるため、質問しています。
でも電話したくない、電話しSu.$a
たい$a
。
var it が最上位スコープの場合this.$a
と同じことを言っていますか?var $a
javascript - IIFEjquery対応
大量のJavaScriptを含むWebプロジェクトに取り組んでいますが、すべてを「$。」に追加していたため、名前空間の衝突が発生し始めました。
名前空間について読んで、http://addyosmani.com/blog/essential-js-namespacing/ですばらしい記事を見つけました。
推奨されているようにIIFE内に名前空間を設定しようとしましたが、関数はすでに次のように設定されているため、運が良かったと思いました。
だから私はそれを次のように変換しました:
(数時間の作業の後)実際にオリジナルが
つまり、すべてがjQueryのready()関数で呼び出されていたということです。
名前空間IIFEを維持したいのですが、jQueryのready()関数内でどのように使用するかがわかりません。これは可能ですか?もしそうなら、どのように?