jQuery条件语句(三元)用于文本()

时间:2016-03-29 15:56:31

标签: javascript jquery ternary-operator

我试图将元素(promo-footer)的文本值设置为变量(footerVar)的内容(如果它不是空字符串''。

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

这样可行,只显示页脚文本(如果存在),并且该变量为空字符串''然后它显示" no" ...

我的问题是 - 为什么这有效?如果等式评估为true,我认为问号出现后的第一件事是什么?

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

这里有效:https://jsfiddle.net/xfzgaLq6/

3 个答案:

答案 0 :(得分:1)

footerVar == ''为空字符串时,此footerVar为true。但在你的情况下,它是一个非空字符串。因此它评估为false并且表达式属于false部分被返回。即:

之后

以下示例将澄清您对三元运算符使用的疑问。

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

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

这是ternary operator

的语法
(condition) 
  ? expression has to be returned when condition evaluates to true
  : expression has to be returned when condition evaluates to false

答案 1 :(得分:1)

你是对的,因为如果footerVar ==='',则条件为真。(页脚为空)并返回第一个语句。如果footerVar不为空,则条件为false,并返回第二个语句。

答案 2 :(得分: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');

现在考虑上面的代码来自你发布的小提琴。 第一个说“foo test”,因为promotionObj.footer_text不是空字符串。代码的第二部分说“不”,因为你交换了表达式的排列,其中变量的值:promotionObj.footer_text只会用作页脚文本(如果它是空的),在这种情况下它不是空的,因此,“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

我希望解释清楚。