私はこのJSプラグインで作業しています。私はそれが何をしているのか理解していますが、なぜそれが働くのか分かりません。ここでJS構文とは何ですか?表現の代入? (x!= null &&(y = x))
はそれの1つのインスタンスの例です:
settings.maxId != null && (params.max_id = settings.maxId);
は条件文と単一=の本だけで活かしますか?これはJSの一般的な構文ですか?
私はこのJSプラグインで作業しています。私はそれが何をしているのか理解していますが、なぜそれが働くのか分かりません。ここでJS構文とは何ですか?表現の代入? (x!= null &&(y = x))
はそれの1つのインスタンスの例です:
settings.maxId != null && (params.max_id = settings.maxId);
は条件文と単一=の本だけで活かしますか?これはJSの一般的な構文ですか?
をチェックする必要はありません。 式であるため、副作用が発生しても、式はであればどこでも使用できます。 したがって:
settings.maxId != null && (params.max_id = settings.maxId)
手段:settings.maxId
がNULLでない場合(とだけにし、&&
がshort circuitingであるため)が順番にsettings.maxId
の値が割り当てられることになり、右式(params.max_id = settings.maxId
)を評価しますparams.max_id
。コーディング
if (settings.maxId != null) {
params.max_id = settings.maxId
}
ハッピー: これは、はるかに明確にとして書かれです。
このステートメントが原因&&
は、この動作は、それが必要だまでJavaScriptが条件を評価することに起因する短絡の論理演算子
であるという事実にのみsettings.maxId != null
場合params.max_id = settings.maxId
を割り当てます。最初の条件が偽であり、第二の場合はこのように、AND
に=
オペレータが表現で、割り当てられた値を評価JavaScriptではさらに
&&
演算子は、 "boolean AND
"と呼ばれます。一般的に、あなたはif
文でそれを参照してくださいね。
if (x == true && y == false) {
が、それは制限はありません。あなたは論理「AND」操作に応じて、単一のブール結果にそのオペランドのブール値を「組み合わせる」への任意の有効な式でそれを使用することがあります。
var z = (x == true && y == false);
// z is now true or false, accordingly
&&
程度素敵なことの一つはそれということです"短絡"。 false && true
では、最初のオペランドがfalse
であるため、式全体はfalse
と評価されるだけなので、2番目のオペランドは評価されません。
のは、それを再度確認してみましょう:このステートメントで
var z = (false && foo());
// z is now false
、機能foo
がでも呼び出されることはありません!プログラムがz
がfalse.
になることを知るためには、これは必須ではありません。これは最適化以外にも、—に依存しています。ちょうどのような式にすることができ、今
(x == 0) && foo();
その割り当てを検討してください。
if (x == 0) {
foo();
}
読みにくい単一の式に
:
一部の愚かな人々は、条件文を書き換えるためにこの手法を使用します関数呼び出し:
var a = (b = c);
または
var a = (b = foo());
そして、上記の技術を経由して、条件に追加します:x
が原因で短絡により、0
ない場合は今すぐ、式全体b = foo()
はまったく評価されません
var a = ((x == 0) && (b = foo()));
。
私たちも、&&
操作の結果で何もする必要はありませんし、我々はa
にそれを保存しない場合はあなただけが残っている:文である
(x == 0) && (b = foo());
ことb
をfoo()
の値に割り当てるのは、x
が0
の場合のみです。
避けてください。読むのは難しいです。ちょうどif
ステートメントを使用してください。
あなたはonelinerの素晴らしさを決して理解しません... – m93a
こんにちはこれは悪いコードだと思われます - (!=)は等しくないことを意味し、オブジェクトがnullでないかどうかをチェックし、2番目の条件(=)は代入を意味します - なぜこのインスタンスの条件文で使用されるのでしょうか?乾杯! –
@Tats_innit:条件文はどこですか?このコードは完全に有効です。それはちょうど愚かです。 –
@ LightnessRacesinOrbit Hiya Srry男私は推測します**条件付き**私は間違っていればヌルチェック、ありがとう、スリリングを使用しているので - ああクールなので、それは実際には悪い声明です! Cheers –