2011-12-19 11 views
2

コードサンプルはhereです。新しい機能(設定){...}(jQuery.query || {}); JavaScriptの意味ですか?

大きなコードチャンクは

new function(settings) { 

で始まり、このトリックは何をするのか

}(jQuery.query || {}); // Pass in jQuery.query as settings object 

で終わりますか?

ここで2つのエラーが見つかるのはなぜですか? Eclipseは冒頭で新しいものを嫌う。私はそれを単に取り除くことができますか?また、Eclipseは、最後に]が "NewExpressionを完了する"ことを望んでいます。

これはどういう意味ですか? []でこれを書くには?

+0

JavaScriptの小文字の "f"と['new function()'の重複が可能です(http://stackoverflow.com/questions/2274695/new-function-with-lower-case-f-in-javascript ) –

答えて

3

これは、自己起動のJavaScript関数を作成する方法の1つです。それは単に宣言され、手首の1つの迅速なフリックで呼び出される関数です。何Eclipseが文句を言っている

http://sparecycles.wordpress.com/2008/06/29/advanced-javascript/

は本当に明確ではありません。構文は完全に有効です。Eclipseが正しく処理できないことがあります。

EDIT:渡される引数:(jQuery.query || {})は、関数にjQuery.queryを渡します。 jQuery.queryがnull、false、ゼロまたは未定義の場合(偽)の場合、null参照を避けて空のオブジェクトリテラルが代わりに渡されます。

+0

Javascriptでインラインでコードを書くだけでコードを呼び出すことはできませんか? – Dims

+0

私は 'new function(x){alert(x);}(" foo ");'を書くことができますが、 'alert(" foo ");'? – Dims

+2

@Dims - 直ちに実行される関数にコードを入れることは、作成する作業変数がグローバルスコープに追加されるのではなく、その関数にローカルスコープを持ち(関数が完了すると消滅する)、その結果、自己完結したコードのブロック。アラートが何らかの副作用を起こすことはないので、アラートのためだけには行いません。 (いくつかの状況ではあまり目立たない利点がいくつかありますが、ここでは説明しません。) – nnnnnn

4

これは、無名関数を作成し、パラメータとして

(jQuery.query || {}) 

でそれを呼び出します。

は、放火犯で

new function(x){alert(x);}("foo"); 

を試してみてください。

+0

jQuery.queryとは何ですか?これは他の場所で定義する必要がありますか? – Dims

+0

私はjQueryを意味します。クエリは体内でも使用されています。それは何かを意味しますか? – Dims

1

new function構造は新しい機能を定義しています。これは主要なブラウザで動作しますが、わずかに異なる構文を使用することをお勧めします。

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

ここでは、関数を定義してすぐに呼び出します。あなたのコードでは、関数はパラメータも渡されます。

Eclipseはおそらくバグです。

関連する問題