jsの論理演算では、0、""、null、false、未定義、NaNはすべてfalseと判定され、それ以外はすべてtrueと判定されます。
||最初のオペランドを計算し、true に変換できる場合は、左側の式の値を返します。それ以外の場合は、2 番目のオペランドを計算します。 || 演算子のオペランドがブール値でない場合でも、返される値の型に関係なくブール値に変換できるため、ブール OR 演算とみなされます。
非ブール値を返す機能を利用します。非ブール値オペランドに || を使用して、一連の代替値の中で最初に定義された非 null 値を選択します (最初の値は非 false 値です)。
例:
var max = max_width || 500 ;
var attr = attr || ""; この操作は、変数が定義されているかどうかを判断するためによく使用されます。変数が定義されていない場合は、関数パラメータのデフォルト値を定義する場合に便利です。
&& の場合、最初の式が最初に評価され、それが false の場合、2 番目の式は処理されません。それ以外の場合は、後続の式が処理され続けます。最初の非真の式の値を左から右に選択し、見つからない場合は最後の式の値を返します。
例: (味については慎重に検討する必要があります)
2 && 's1' && '123' && 'sss' 式の値は 'sss' と等しい
2 && 's1' && '' && 'sss' 式の値は '' に等しい
2 && 's1' && NaN && 'sss' 式の値は NaN に等しい
if(a >=5){
アラート("こんにちは");
}
次のように簡略化できます。
a >= 5 && アラート("こんにちは");
typeof 5 と typeof !!5 の違いは、より厳密な書き方です。 !! の機能は、他の型の変数を bool 型に変換することです。たとえば、if(!!attr) => if(attr)
js の || と && の機能は、コードを合理化するだけでなく、コードの可読性を低下させます。そのためには私たち自身で重さを量る必要があります。
JS での startWith 関数の賢明な実装、alert(!'asdf'.indexOf('s')) => !0 = true