1. ||(論理または)、
文字通り、FalseはFalseの前後の両方でのみ返され、そうでなければTrueが返されます。
アラート(true || false); // truealert(false || true); // truealert(true || true); // truealert(false || false); // 間違い
この愚か者はそれを知っています~~
しかし、より深い意味で、別の世界があります。次のコードを試してください
アラート(0 || 1); // 1
明らかに、最初の0はfalseを意味し、2番目の1は真であることを意味し、上記の結果は真であるはずであり、結果は1です。
アラート(2 || 1); // 2
最初の2は真であり、最後の1が真であることを知っています。では、返品結果は何ですか?テスト結果は2です。
アラート( 'a' || 1); // 'a'
同様に、最初の「a」は真であり、次の1は真です。テスト結果は「A」であり、次のものです
アラート( '' || 1); // 1
上記から、フロントが偽で、背面1は真であり、戻り結果は1です。
アラート( 'a' || 0); // 'a'
最初の「a」は真であり、次の0はfalseであり、戻り結果は「a」です。
アラート( '' || 0); // 0
以前の「false、次の0もfalseであり、戻り結果は0です
アラート(0 || ''); // ''
最初の0はfalseで、次の0は「false、戻り結果はfalseです」
これはつまり
1。「||」と限り「||」の前では、「||」||」 「||」の後ろに真または偽り、「||」の後の値は返品されます。
2。「||」と限り「||」かどうかに関係なく、真実ですtrueまたはfalse、「||」の前の値は返品されます。
私はこれを短絡の原則と呼びます:最初のものの結果を知っているなら、あなたはその後出力を知るでしょう。最初のものが真である場合は、最初の値の値を取得し、最初の値が偽の場合は、2番目の値の値を取得します。
JSが覚えておくべき6ボール:覚えておいてください:JS論理操作、0、 ""、null、false、undefined、およびnanはfalseと判断され、他は真実であると判断されます(省略はないようです、確認してください)。これを覚えておく必要があります。そうしないと、アプリケーションに問題があります||そして &&。
ちなみに、私はよく(attr)firect(attr)を直接書かない理由をよく尋ねます。
実際、これはより厳格な執筆方法です。
Typeof 5とTypeofの違いをテストしてください!! 5。の機能!!他のタイプの変数をブールタイプに変換することです。
2。&&(ロジスティックと)
文字通り、TRUEは、前と後の両方がTRUEである場合にのみ返されます。
アラート(true && false); // falsealert(true && true); // truealert(false && false); // falsealert(false && true); // 間違い
次に、上記のエクスペリエンスに基づいて、「&&」数字がブールタイプだけではない状況を見てみましょう。
アラート( '' && 1); // ''
結び目は "、" && "の前に"、 "" && "がfalseで、1はその後真です。
アラート( '' && 0); // ''
結び目は "、" && "before"がfalseで、0もfalseです。
アラート( 'a' && 1); // 1
結び目は1、「&&」は「aがtrueで、次の1つがtrueも返されます。
アラート( 'a' && 0); // 0
結び目は0、「&&」は「aがtrueで、以下は0がfalseです。
アラート( 'a' && ''); // ''
結び目はreturn "、" && "の前に、「aはtrue、後の」はfalseです。
アラート(0 && 'a'); // 0
結び目は0、「&&」がfalseで、「a」が真であることを返します。
アラート(0 && ''); // 0
結び目は0、「&&」は「0がfalse、after "がfalseになります。
短絡原則
1。「&&」が偽である限り、「&&」が真かfalseであるかどうかに関係なく、 "&&"が返されます。
2。「&&」が真である限り、「&&」が真かfalseであるかどうかに関係なく、結果は「&&」の後に値を返します。
3。開発におけるアプリケーション
次の3つのコードは同等です。
a = a || "defaultValue"; if(!a){a = "defaultValue"; } if(a == null || a == "" || a == undefined){a = "defaultValue"; }どちらを使いたいですか?
2。var yahoo = yahoo ||など{};非常に広く使用されています。初期値をエレガントにする方法ではありませんか? IFより。 。 。 。他の...はるかに良い、より良い? :はるかに優れています。
3。コールバック&& callback()
コールバックでは、これはしばしばこのように書かれており、より厳格です。最初に、コールバックが存在するかどうかを判断します。存在する場合は、実行してください。このように書く目的は、エラーが報告されないようにすることです。
callback()を直接記述した場合;コールバックが存在しない場合、コードはエラーを報告します。
4。包括的な例
要件を図に示します。
ここに写真の説明を書いてください
成長率が次のように指定されていると仮定します。
成長率が5の場合、1矢印が表示されます。
成長率が10の場合、2つの矢印が表示されます。
成長率が12の場合、3つの矢印が表示されます。
成長率が15の場合、4つの矢印が表示されます。
他のすべてが0の矢印を表示します。
コードで実装する方法は?
少しもif、else:
var add_level = 0; if(add_step == 5){add_level = 1; } else if(add_step == 10){add_level = 2; } else if(add_step == 12){add_level = 3; } else if(add_step == 15){add_level = 4; } else {add_level = 0; }少し良いスイッチ:
var add_level = 0; switch(add_step){case 5:add_level = 1;壊す;ケース10:add_level = 2;壊す;ケース12:add_level = 3;壊す;ケース15:add_level = 4;壊す;デフォルト:add_level = 0;壊す;}要件が変更された場合:
成長率は> 12および4矢印が表示されます。
成長率が10の場合、3つの矢印が表示されます。
成長速度は> 5と2つの矢印が表示されます。
成長速度> 0は1矢印を示しています。
成長速度は<= 0で、矢印は表示されます。
その後、スイッチを使用して実装することは非常に面倒です。
それで、あなたはそれを一行で実装することを考えたことがありますか?
さて、JSの強力な表現力を見てみましょう。
var add_level =(add_step == 5 && 1)|| (add_step == 10 && 2)|| (add_step == 12 && 3)|| (add_step == 15 && 4)|| 0;
より強力でより良い:
var add_level = {'5':1、'10 ':2、'12':3、'15 ':4} [add_step] || 0;2番目の要件:
var add_level =(add_step> 12 && 4)|| (add_step> 10 && 3)|| (add_step> 5 && 2)|| (add_step> 0 && 1)|| 0;
上記は、「&&」と「||」の包括的な分析です。 JavaScriptのオペレーターは、編集者によって紹介されました。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!