1

Javascript に関する Mozilla Developer Network のページを読んでいて、ある行に混乱しています。問題の説明と行は次のとおりです。

&& と || 演算子は短絡論理を使用します。つまり、2 番目のオペランドを実行するかどうかは最初のオペランドに依存します。これは、属性にアクセスする前に null オブジェクトをチェックするのに役立ちます。

var name = o && o.getName();

ここでの私の混乱は、おそらくスニペットの目的は次のことを実行することです。

var name;
if (o){
     name = o.getname();
}  

ただし、ここで起こっていることは、名前にブール値が割り当てられており、そのブール値が「o が存在し、その名前が空ではない」ことです。つまり、私には次のように見えます。

var name = false;
if (o && o.getname()){
    name = true;
}

ありがとう!

4

1 に答える 1

2

この回答はFelix Klingのコメントであり、報われた評判を得るために彼自身の回答として投稿することを願っています。


一番上にあるLogical Operatorsを見てください。

「論理演算子は通常、ブール (論理) 値で使用されます。その場合、ブール値が返されます。しかし、&& および || 演算子は実際には、指定されたオペランドのいずれかの値を返すため、これらの演算子が非-ブール値。非ブール値を返す場合があります。」

于 2014-04-28T15:50:34.737 に答える