私はしばしば、どこでも偉大な人々のコードに多くの略語された条件付き表現ステートメントを見ます。この側面を紹介する記事を読んだ後、この記事(http://www.thomasfrank.se/3_ways_2_say_if.html)が悪くない場合、3つの方法が言うと思います。この記事では、著者は、if ... else ...、?:、&&/||の伝統的な表現の特性と使用を要約し、次のように要約しました。
1。if ... else structure
// rを0または1 var r = math.floor(2*math.random())// r == 0の場合はa、b、cに「small」に設定します。 if(r == 0){a = "small"} else {a = "big"}; //方法2:条件付き演算子var b = r == 0? 「小」:「ビッグ」; //方法3:および/またはオペレーターvar c = r == 0 && "small" || "大きい"; //変数の値をチェックアラート(r+""+a+""+b+""+c);2。if ... else if ... else structure
// rを0,1,2または3 var r = math.floor(4*math.random()) if(r == 0){a = "nada"} else if(r == 1){a = "small"} else if(r == 2){a = "big"} else {a = "巨大"}; //方法2:条件付き演算子var b = r == 0? 「nada」:r == 1? 「小」:r == 2? 「ビッグ」:「巨大」; //方法3:および/またはオペレーターvar c = r == 0 && "nada" || r == 1 && "small" || r == 2 && "big" || "巨大な"; //変数の値をチェックアラート(r+""+a+""+b+""+c);3。関数を実行します
// rを0,1,2または3 var r = math.floor(4*math.random())//グローバル変数xと4つの関数var x = ""; nada = function(){x+= "nada!"}; small = function(){x+= "small!"}; big = function(){x+= "big!"}; gage = function(){x+= "gage!"}; // rの値に応じて特定の関数を呼び出す3つの異なる手法を使用します//方法2:条件付き演算子r == 0? nada():r == 1? small():r == 2? big():gage(); //方法3:および/または演算子r == 0 &&(nada()|| true)// nada()関数は必ずしもtrueを返すわけではありません。その後のロジックまたは||を確認するため判断は実行されず、真の値を返す必要があります。 r == 1 &&(small()|| true)|| r == 2 &&(big()|| true)||巨大な(); //変数の値を確認しますアラート(r+""+x);4。コードを実行します
// rを0,1,2または3 var r = math.floor(4*math.random())//グローバル変数x var x = ""; // rの値に応じて異なるコードを実行します// 3つの異なる手法を使用します//方法1:if .. else if(r == 0){x+= "nada!"} else if(r == 2){x+= "small!"} else if(x+= "{x+=" big! "} //方法2:条件付き演算子r == 0? function(){x+= "nada!"}():r == 1? function(){x+= "small!"}():r == 2? function(){x+= "big!"}():function(){x+= "gage!"}(); //方法3:および/または演算子r == 0 &&(function(){x+= "nada!"}()|| true)//ここでの匿名関数は不要であるとコメントで指摘しました。 r == 1 &&(function(){x+= "small!"}()|| true)|| r == 2 &&(function(){x+= "big!"}()|| true)|| function(){x+= "gage!"}(); //変数の値を確認しますアラート(r+""+x);このオンライン記事では、著者の焦点はコードの短さにあるため、一般的に、著者は?:オペレーターを使用することを好み、&&と||を感じています。方法は、さらにいくつかの文字を入力する必要があるため、より面倒に見えます。機能を実行する場合、従来のif ... elseを使用する方が便利です。コメントの中で、一部の人々は、クライアントサイドコードをよりシンプルで短くすることは、いくつかの目立たないランニング効率を改善するよりも効果的であり、これは一部のプログラムでも正しいと示唆しています。したがって、動作効率がUAによって異なることは言うまでもなく、これらのステートメント自体の動作効率よりも、正式な観点から条件付きステートメントを処理するためのより簡潔なフォームを選択することがより重要かもしれません。
ifを使用する条件は2つしかないという判断において、... elseまたは?:両方とも非常に簡単ですが、&&&||の操作方法は非常に簡単です。少し複雑です。しかし、実際、次の2つの基本原則を理解している限り、すべての問題が解決されます。
まず、論理と&&と論理または||を使用する場合オペレーター、方向は左から右にあります。 &&は、最初の値がfalse(またはnull/undefined/"/" "/nanなどのfalseに変換できる値)の場合に停止し、最初の値がtrue(またはtrueに変換できる値)の場合に停止します。条件全体によって返される値は、最後に検出された条件の値であり、必ずしも真/偽だけではありません。
第二に、ロジックは、論理または演算子よりも&&演算子よりも優先度が高い。
最初の原則によれば、r == 0および「小」は左から右に計算されます。 r == 0の場合、「小」が検出されます。 「スモール」は空の文字列であるため、Cは「小」と見なされます。 r == 0がfalseの場合、2番目の条件は論理または||の「大きな」検出直接開始されます。同様に、Cは「大きな」と見なされるべきです。 2番目の原則によれば、上記のコードで変数Cの操作中にブラケットを追加する必要はありません。
and &&、||を使用する以来オペレーターは、特定のプログラムでコードを簡素化する役割を果たすことができます。これは、jQueryなどのライブラリソースコードで非常に重要です。要約すると、このタイプのオペレーターには2つの主要なアプリケーションがあります。1つは値を割り当てるか返すことであり、もう1つはコードを実行することです(今のところ、分類)。
割り当ての使用法は、jqueryまたは他のライブラリのどこにでもあります。古典的なアプリケーションは、インターフェイスのデフォルト値の関数を実装することです。次のようなコードを簡単に記述できます。
var myobj = function(options){var color = options.color || this.defaults.defaults; var backgroundcolor = options.backgroundcolor || this.defaults.backgroundcolor;}; myobj.prototype.defaults = {color: "#393939"、backgroundcolor: "#222"} var myobj({color: "#80ff80"}); console.log( "+myins.color+"+"+myins.color+"+myinsそれが機能するかどうか:または&&および||。彼らはif ... else({} numberでラップされた)の生来のコードブロック関数を持っていないため、次のようなシングルラインコードのみを実行できます。
(xmlhttprequest.readystate == 4 && xmlhttprequest.status == 200)? alert( "success!"):alert( "fails!");
したがって、実行する必要がある複数のコードがある場合は、匿名関数を使用する必要があります。のように:
(xmlhttprequest.readystate == 4 && xmlhttprequest.status == 200)? function(){alert( "success!"); var a = 100;アラート(a);}:alert( "fails!");2643行など、JQuery 1.7.1ソースコードには略語が多すぎます。
// boolean attributesboolhookのフック= {get:function(elem、name){//対応するプロパティとalign boolean属性// booleanがサポートされていない属性存在に戻るvar属性= jquery.prop(elem、name);プロパティを返す=== true || typeofプロパティ!== "boolean" &&(attrnode = elem.getattributenode(name))&& attrnode.nodevalue!== false? name.tolowercase():未定義; }、set:function(){...}}学習を続け、要約しなければならないようです。
上記のJavaScriptの略語条件文(推奨)は、私があなたと共有するすべてのコンテンツです。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。