83

JavaScriptでできることは知っています:

var oneOrTheOther = someOtherVar || "these are not the droids you are looking for...";

変数は、 、、またはoneOrTheOtherでない場合、最初の式の値を取ります。その場合、2 番目のステートメントの値に割り当てられます。nullundefinedfalse

しかし、論理 AND 演算子を使用すると、変数は何oneOrTheOtherに割り当てられるのでしょうか?

var oneOrTheOther = someOtherVar && "some string";

someOtherVarが false でない場合はどうなりますか? が false の
場合はどうなりますか?someOtherVar

JavaScript を学習したばかりで、AND 演算子と組み合わせて割り当てを行うとどうなるか興味があります。

4

7 に答える 7

110

基本的に、論理 AND 演算子 ( &&) は、最初のオペランドが truey の場合は 2 番目のオペランドのを返し、それ自体がfalsyの場合は最初のオペランドの値を返します。次に例を示します。

true && "foo"; // "foo"
NaN && "anything"; // NaN
0 && "anything";   // 0

偽りの値は、ブールfalseコンテキストで使用された場合に強制されるものであることに注意してください。nullundefined0NaNfalsetrue

于 2010-07-02T05:28:29.453 に答える
38

&&ガード演算子と呼ばれることもあります。

variable = indicator && value

指標が真である場合にのみ、値を設定するために使用できます。

于 2010-07-02T05:37:07.853 に答える
19

Douglas Crockford の引用1 :

最初の&&オペランドが偽の場合、演算子は最初のオペランドの値を生成します。それ以外の場合は、2 番目のオペランドの値が生成されます。


1 Douglas Crockford: JavaScript: 良い部分- 16 ページ

于 2010-07-02T05:28:13.137 に答える
0

私は && が代入ステートメントのために職場で過剰に使われているのを見てきました。懸念事項は 2 つあります。1) 「インジケータ」チェックは、開発者が考慮していないオーバーヘッドを伴う関数である場合があります。2) 開発者は、これを安全チェックと見なし、var に false を割り当てているとは考えないのは簡単です。私は彼らに型安全な態度をとってもらいたいので、これを変更してもらいました:

var currentIndex = App.instance && App.instance.rightSideView.getFocusItemIndex();

これに:

var currentIndex = App.instance && App.instance.rightSideView.getFocusItemIndex() || 0;

したがって、期待どおりに整数を取得します。

于 2017-04-03T21:33:09.087 に答える