2012-02-29 4 views
2
x = (typeof x != 'undefined' && x instanceof Array) ? x : []; 

私は、xが定義されていてそれが配列であると理解します。 :未定義の場合、または配列でない場合は[]を実行します。 []は何ですか?この省略表現は実際にどのように機能しますか? "x =(typeof x!= 'undefined' && x instanceof Array)?x:[];"

誰でも知っていますか?どのように動作しているのか、他の簡略化されたテクニックの例がわかりますか、ここで何が起こっているのか説明できますか?

は、私は本当にそれが

+2

nullundefinedfalse''(空文字列)、または0ない '[]' *リテラル*アレイです。 [MDN JavaScript Guide](https://developer.mozilla.org/ja/JavaScript/Guide)、特に[リテラル](https://developer.mozilla.org/ja/JavaScript/Guide/)を読むことをお勧めします。値%2C_Variables%2C_and_Literals#リテラル)。 –

+2

'typeof x!= 'undefined' &&'は冗長ですbtw –

答えて

2

[]は空の配列である配列を作成する方法を理解しません。

したがって、xundefinedであるかどうかは、空の配列に設定されます。デフォルト引数のための

http://msdn.microsoft.com/en-us/library/windows/apps/be21c7hw%28v=vs.94%29.aspx

別の有用な速記です:

条件付き(三元)についての詳細はこちらをオペレータがあり

if (!(typeof x != 'undefined' && x instanceof Array)) { 
    x = []; 
} 

:これは同じである

function (x) { 
    x = x || 7; 
} 

これは、x == false(すなわち、x == false)である限り、xから7に設定されます。 x

+0

もしxが配列なら関数を実行したいのですが、x =(typeof x!= 'undefined' && x instanceof Array)ですか? functionName(); :[];あれは正しいですか? – user1082764

+0

@ user1082764: 'functionName()'の戻り値を 'x'に*割り当てる*場合のみです。条件付き演算子は、変数の代入にのみ使用してください。代わりに、通常の 'if'文を使用してください(私はあなたの前の質問に私の答えで言ったように)(http://stackoverflow.com/questions/9490555/how-can-i-create-an-array-if-it -doesnt-exist-and-run-a-jquery-function-after-it))。 –

+0

これは非常に便利でした。私はここで質問したことがありますが、これは決して徹底的に答えたことはありません。ありがとうございました! – user1082764

関連する問題