前の言葉
論理演算子は、オペランドでブール操作を実行し、関係オペレーターと組み合わせて使用されることがよくあります。論理演算子は、複数のリレーショナル式をより複雑な式に結合します。論理演算子は、論理非 '!'、論理および「&&」、論理または「||」の3つのタイプに分割されます。この記事では、これら3つの論理演算子を紹介します。
論理的ではない
論理的な非操作者は、感嘆符(!)で表され、ECMAScriptの任意の価値に適用できます。データ型に関係なく、この値はこのオペレーターがブール値を返します。論理的な非操作者は、最初にそのオペランドをブール値に変換し、次に逆にします。
ブール型への論理非ペアオペランドの変換タイプは、結果が最終的に反転することを除いて、ブール()変換関数と同じです。 2つの論理的非オペレーターが同時に使用される場合、Boolean()変換関数の動作が実際にシミュレートされます。
console.log(!! undefined); // falseconsole.log(!! null); // falseconsole.log(!! 0); // falseconsole.log(!! - 0); // falseconsole.log(!! nan); // falseconsole.log(!! '');
console.log(!! {}); // trueconsole.log(!! []); // trueconsole.log(!! new boolean(false)); // trueconsole.log(!! false); // falseconsole.log(!! new boolean(null));論理的な非オペレーターは、ループを制御するためによく使用されます
// Boolean変数(BFound)を使用して、検索が成功したかどうかを記録します。質問のデータ項目が見つかった場合、bfoundはtrueに設定されます!bfoundはfalseに等しくなります。つまり、runはloop var bfound = false; var i = 0; while(!bfound){if(avalue [i] == vsearchvalues){bfound = true; } else {i ++; }}ロジックと
ロジックと演算子は、2つの合計(&&)で表されます。 2つのオペランドがあります。結果は、両方のオペランドが真である場合にのみTRUEを返します。そうでなければFALSEが返されます。
//ロジスティックと(&&)真実の表、最初のオペランド、2番目のオペランド結果真の真の真の偽誤り偽り偽り偽り偽り偽り偽り偽り
ロジックと操作は、ブール値だけでなく、あらゆる種類のオペランドに適用できます。オペランドの1つがブール値ではない場合、ロジックと操作は必ずしもブール値を返すわけではありません
ロジックと操作は短絡操作です。最初のオペランドが結果を決定できる場合、2番目のオペランドはもはや評価されません。
ロジックの場合、最初のオペランドが偽の場合、2番目のオペランドがどんな値であっても、結果はfalseで、最初のオペランドが返されます。最初のオペランドが真である場合、結果の真とfalseは2番目のオペランドの真と偽と同じであるため、2番目のオペランドが返されます。
// false、未定義、null、+0、-0、nan、および ''の7つのfalse値を除き、残りはすべて真の値console.log( 't' && ''); // 't'は真の値であるため、 '' console.log( 't' && 'f'); // 't'は真の値であるため、 'f'console.log(' t '&&' ')を返します。 // 't'は真の値であるため、 '' console.log( '' && ''); // ''はfalse値であるため、それは返されます '' 'console.log(' '&&' '); // ''はfalse値であるため、returns '' '' console.log( '' && ''); // ''は虚偽の値であるため、それは返されます」 ''
var i = 1; var result =(true && i ++); console.log(result、i); // trueはtrue value、execute i ++、i oは2、var result =(false && i ++); console.log(result、i); //
ロジックと演算子は複数の方法で使用でき、最初のブール式の値を偽で返します
console.log(true && 'foo' && '' && 4 && 'foo' && true); // ''
リレーショナル演算子の優先順位は、ロジックと(&&)および論理または(||)の優先度よりも高いため、括弧を追加せずに同様の式を直接記述できます。
if(a+1 == 2 && b+2 == 3){// todo}構造の代わりにロジックと演算子を使用できます
if(a == b){dosomething();} //は(a == b)&& dosomething()に相当します。ロジックと演算子は、コールバック関数でよく使用されます
//値がパラメーターaに渡されない場合、aはデフォルトの未定義であり、虚偽の値であるため、エラーを防ぐためにA()は実行されません。値がパラメーターaに渡された場合、関数a()関数fn(a){if(a){a(); }} //関数に相当するfn(a){a && a();}論理的または
論理または演算子は、2つの垂直線(||)で表されます。 2つのオペランドがあります。両方のオペランドがfalseの場合にのみ、結果はfalseを返し、それ以外の場合はtrueが返されます。
//ロジスティックまたは(||)真実の表、最初のオペランド、2番目のオペランド結果真の真の真の真の真の偽誤り偽り偽り偽り偽り偽り偽り偽り偽り偽り
同様に、ロジックまたは操作は、ブール値だけでなく、あらゆる種類のオペランドに適用できます。オペランドの1つがブール値ではない場合、ロジックまたは操作は必ずしもブール値を返すとは限りません
ロジックまたは操作も短絡操作です。最初のオペランドが結果を決定できる場合、2番目のオペランドはもはや評価されません。
ロジックまたは、最初のオペランドが真である場合、結果は2番目のオペランドの値に関係なく真であり、最初のオペランドが返されます。最初のオペランドがfalseの場合、結果の真と偽は2番目のオペランドの真と偽と同じであるため、2番目のオペランドが返されます。
console.log( 't' || ''); // 't'は真の値であるため、 "t" console.log( 't' || 'f');値、それは返されます ""
var i = 1; var result =(true || i ++); console.log(result、i); // trueはtrue value、i ++は実行されないので、結果はtrue、iは1var i = 1; var result =(false || i ++); console.log(result、i); //
同様に、ロジックまたは演算子を複数の連結で使用して、最初のブール式の値を返すことができます。
console.log(false || 0 || '' || 4 || 'foo' || true); // 4
論理または演算子は、変数のデフォルト値を設定するためによく使用されます
//オブジェクトがパラメーターPに渡されない場合、パラメーターはデフォルトで空のオブジェクトに設定されますfunction fn(p){p = p || {};}上記は、JavaScriptオペレーターの完全な分析です - 編集者があなたに提起した論理演算子です。誰もがwulin.comをサポートすることを願っています〜