5

&&次のように変数を宣言する実用化に興味があります。

var x = undefined && 4;

// Evaluate to the first falsey value
// or else the last value.

eval(x);
// undefined

値がどのように評価されるかを理解しています (この SO 回答を参照してください)。また、その姉妹||(詳しい説明についてはこちらを参照) と、次の式で変数を宣言すると便利な理由も理解しています。

// Some other variable
var y;

var x = y || 4;

// Evaluate to the first truthy value
// or else the last value.

実際には、最初の値が偽でない限り、最初の値を使用します。その場合は、最後の値を使用してください。||ブラウザ コンソールで のこの特性を示すことができます。

> null || 4
  4
> 4 || null
  4

> null || undefined
  undefined
> undefined || null
  null

> true || 4
  true
> 4 || true
  4

に関しては&&

> null && 4
  null
> 4 && null
  null

> null && undefined
  null
> undefined && null
  undefined

> true && 4
  4
> 4 && true
  true

これを次のように解釈する必要があります: 最初の値が真実でない限り、最初の値を使用します。その場合、最後の値を使用しますか?

条件付きステートメントの使用を最小限に抑えるためにコーディング ショートカットを使用することに興味があります。

jQuery コア ソースの472 行目に、このコーディング方法の例を見つけました。

scripts = !keepScripts && [];

&&質問は次のとおりです。javascript 変数宣言で使用するための適切なコンテキストを説明できる人はいますか? それは悪い習慣だと思いますか?

ありがとう!

4

4 に答える 4

4

一般に、このような「ショートカット」は、典型的な JavaScript プログラマーにとって代替手段よりもコードが読みやすくなる場合にのみ使用してください。

より読みやすく、驚くべきことではないことを考えるときは、次のことを考慮してください。

var foo;
if(bar) {
    foo=[];
}

var foo = bar && [];

同じではありません。たとえば、barisの場合NaN、 thenfooNaN後者のケースになります。

JavaScript を最適化/最小化するツールがあるため、コードの可読性に重点を置く必要があります。これは必ずしも簡潔さと同じではありません。

このような反復的な初期化が連続していくつかあり、すべてが異なる変数に依存していて (単一の条件にラップできないように)、同じ論理式に従っているとします。この場合、読者が数式の意味を頭の中で解析すると、すべてのインスタンスをすばやくスキャンして、それぞれの違いを確認できます。この場合、ほとんどの JavaScript プログラマーが慣れ親しんでいる規則 ( などvar foo = some_opt || {}) に依存する代わりに、ローカライズされた規則を作成しているため、読者はこのファイルについてのみ学習する必要があります。この場合でも、慎重に検討することをお勧めしますが、おそらくそれだけの価値はありません。

于 2013-02-19T21:59:34.557 に答える
0

まあ、それは一般的なイディオムですが、おそらくそれはあなたのコードを読みにくくします。だから、私の提案は、それがさらにいくつかのキーストロークを意味するとしても、それを単純にしてください。

于 2013-02-19T22:03:13.400 に答える
0

実際には、常に危険なコードであるため、Jquery のように && 演算子を定期的に使用するべきではありません。この使用法により、何をしたかを忘れたり、バグを見つけられない場合があります。私は個人的にこれを悪い習慣と考えています。使用したいかもしれませんが、コードが読めなくなります。私たち開発者は、コードのわかりやすさと可読性について考える必要があります。

于 2013-02-19T21:57:00.793 に答える