以下のコードはJavaScriptで完全に有効です:-
( { a:10 , b:20 , c:30 } );
しかし、コードで参照できないようなオブジェクトが必要になるのはいつですか?
以下のコードはJavaScriptで完全に有効です:-
( { a:10 , b:20 , c:30 } );
しかし、コードで参照できないようなオブジェクトが必要になるのはいつですか?
多くの場合、名前のないリテラルを関数呼び出しのパラメーターとして使用します。一般的な例は、要素に対してjQueryプラグインメソッドを呼び出すことです。例:
$("div").someMethod({prop:'value',otherProp:'value2'});
次のように、そのようなオブジェクトを事前に変数に割り当ててから渡すことも可能です(そして多くの場合有益です)。
var options = {prop:'value',otherProp:'value2'};
$("div").someMethod(options);
しかし、最初の方法の方が簡単でクリーンな場合もあります。
( { a:10 , b:20 , c:30 } );
オブジェクトの参照がないため、役に立ちません。しかし、同じ方法で無名関数を定義できます(function(){ })()
; これはとても便利です。
このコードは、(あなたが言ったように)参照できないため、少し「無意味」です。
'何もしない'多くの言語で有効なコードを作成できます。
例えば、
function foo() {
var bar = 42;
}
繰り返しますが、上記の関数は完全に有効ですが、あまり効果がありません。
実際、これはかなり便利です。たとえば、そのアプローチでI18nを完全に処理できます。
({de: {title: 'foo'}, en: {title: 'bar'}})[navigator.language.slice(0,2)]
したがって、次のようなsmthで終わる可能性があります。
var lang = navigator.language.slice(0,2)
var dict = ({de: {title: 'foo'}, en: {title: 'bar'}})[lang]
console.log(dict.title)
()
グループ化演算子です。【参考】
この式は、評価の結果を返します。これはタイプ参照である可能性があります。
{a:10, b:20, c:30}['a']; // invalid
({a:10, b:20, c:30})['a']; // valid.
Because the object `{a:10, b:20, c:30}` is after being evaluated.