2016-03-29 13 views
-1

空の文字列でない場合は、変数(footerVar)の内容に要素(promo-footer)のテキスト値を設定しようとしています。なぜこの仕事をする -text()のjQuery条件文(Ternary)

私の質問がある作品、それが存在し、変数が空の文字列「」それは、「いいえ」が表示されている場合のみ、フッターのテキストを表示する

$('.promo-footer').text(footerVar == '' ? 'no' : footerVar); 

... ?私は、方程式がtrueと評価されるならば、疑問符の後の最初のことが起こると思いましたか?

x = (1 < 2) ? true : false; 

ここでは、アクションである:https://jsfiddle.net/xfzgaLq6/

+6

私は混乱しています。あなたはそれがどのように機能するのか、あなたはそれがどのように機能するのかを記述して、それがなぜ機能するのかを尋ねます。 (ヒント:以前に説明したすべての理由でうまくいきます) – Jamiec

+1

footerVarが '' ''の場合、最初の部分はtrueと評価され、記述したように「いいえ」となります – IrkenInvader

+0

@Jamiecなぜ知ったら、 「なぜ」という質問をしました。今私の質問に答えられて、私は理解しています。 – SpaceNinja

答えて

1

これは適切な方法で動作します。

var promotionObj = {}; 
promotionObj.footer_text = "foot test"; 

// This works, says "foot test". Why?? 
$('.promo-footer').text(promotionObj.footer_text == '' ? 'no' : promotionObj.footer_text); 

// This says "no": 
$('.promo-footer').text(promotionObj.footer_text == '' ? promotionObj.footer_text : 'no'); 

ここであなたが投稿したフィドルからの上記コードを考慮してください。 promotionObj.footer_textは空の文字列ではないため、最初の文字は "foo test"と表示されます。変数の値がpromotionObj.footer_textのみが空で、この場合は空でない場合にのみフッターテキストとして使用される式の配置を入れ替えたため、コードの2番目の部分に「no」と表示されます。したがって、その代わりに「いいえ」が表示されます。

これを考慮してください。

var arg = 5; 
var result = arg > 10 ? arg : 0; // result contains 0 
var result = arg > 10 ? 0 : arg // result contains 5 which is the value of arg 

説明が分かりやすいことを願います。

+0

ありがとうございます。意味あり。 – SpaceNinja

1

このfooterVar == ''真にfooterVarが空の文字列であるとき。しかし、あなたの場合、それは空ではない文字列です。したがって、それはfalseと評価され、式は偽の部分に属し、返されました。すなわち、:

次の例では、3項演算子の使用について疑問を明確にします。 。(フッタが空である)とfooterVar ===「」は、その後、条件が真の場合なのでこれはternary operatorの構文です

var x = (true) ? 10 : 20; 
console.log(x); //10; 

var x = (false) ? 10 : 20; 
console.log(x); //20; 

(condition) 
    ? expression has to be returned when condition evaluates to true 
    : expression has to be returned when condition evaluates to false 
+1

ああ、私は今それを得る。意味あり。ありがとうございました。 – SpaceNinja

1

あなたは正しい、それは最初を返しますステートメント。 footerVarが空でない場合、条件はfalseであり、2番目のステートメントを返します。