什么是?:(问号和冒号运算符。条件或“三元”)操作符,我如何使用它?


它被称为“三元”或“条件”操作符。

例子

?:操作符可以用作 if的快捷方式…else语句。 它通常用作 更大的表达式,其中if…else 声明会很尴尬。为 例子:

var now = new Date();
var greeting = "Good" + ((now.getHours() > 17) ? " evening." : " day.");

这个例子创建了一个字符串 上面写着"晚上好 下午6点之后。使用的等效代码 一个如果…Else语句看起来像 如下:

var now = new Date();
var greeting = "Good";
if (now.getHours() > 17)
   greeting += " evening.";
else
   greeting += " day.";

来自MSDN JS文档。

基本上这是一个简写的条件语句。

还看到:

Javascript三元运算符的运算符优先级 维基百科


这是if-else语句的一行简写。它叫做条件算子

下面是一个可以用条件操作符缩短的代码示例:

var userType;
if (userIsYoungerThan18) {
  userType = "Minor";
} else {
  userType = "Adult";
}

if (userIsYoungerThan21) {
  serveDrink("Grape Juice");
} else {
  serveDrink("Wine");
}

这个可以用?:来缩短,像这样:

var userType = userIsYoungerThan18 ? "Minor" : "Adult";

serveDrink(userIsYoungerThan21 ? "Grape Juice" : "Wine");

像所有表达式一样,条件操作符也可以作为带有副作用的独立语句使用,尽管这在简化之外是不常见的:

userIsYoungerThan21 ? serveGrapeJuice() : serveWine();

它们甚至可以被捆绑:

serveDrink(userIsYoungerThan4 ? 'Milk' : userIsYoungerThan21 ? 'Grape Juice' : 'Wine');

但是要小心,否则你最终会得到像这样令人费解的代码:

var k = a ? (b ? (c ? d : e) : (d ? e : f)) : f ? (g ? h : i) : j;

1通常被称为“三元操作符”,但实际上它只是一个三元操作符(接受三个操作数的操作符)。不过,这是JavaScript目前仅有的一个功能。


当你拥有的都是符号时,想要谷歌有点困难;)使用的术语是“JavaScript条件运算符”。

如果您在JavaScript中看到更多有趣的符号,您应该首先尝试查找JavaScript的操作符:Mozilla Developer Center的操作符列表。您可能遇到的一个例外是$符号。

为了回答您的问题,条件操作符替换了简单的if语句。最好举个例子:

var insurancePremium = age > 21 ? 100 : 200;

而不是:

var insurancePremium;

if (age > 21) {
    insurancePremium = 100;
} else {
    insurancePremium = 200;
}

z = (x == y ? 1 : 2);

等于

if (x == y)
    z = 1;
else
    z = 2;

当然,除了,它更短。


它叫做三元算符。为了了解更多信息,我回答了另一个问题:

如何编写不带else的IF else语句


它叫做三元算符

tmp = (foo==1 ? true : false);

这是一行中的if语句。

So

var x=1;
(x == 1) ? y="true" : y="false";
alert(y);

要计算的表达式在()中。

如果匹配为true,则执行?

如果匹配为false,执行下面的代码:


我想在已经给出的答案上加上一些。

如果你遇到(或想要使用)三元的情况,如'显示一个变量,如果它被设置,否则…',你可以让它更短,没有三元。


而不是:

var welcomeMessage  = 'Hello ' + (username ? username : 'guest');

你可以使用:

var welcomeMessage  = 'Hello ' + (username || 'guest');

这是javascript相当于PHP的速记三元操作符?:

甚至:

var welcomeMessage  = 'Hello ' + (username || something || maybethis || 'guest');

它对变量求值,如果它为false或未设置,则继续执行下一个。


三元运算符

Javascript中通常有条件语句。

例子:

if (true) {
    console.log(1)
} 
else {
    console.log(0)
}
# Answer
# 1

但它包含两行或多行,不能赋值给变量。 Javascript有一个解决这个问题的三元运算符。 三元操作符可以写在一行中并赋值给一个变量。

例子:

var operator = true ? 1 : 0
console.log(operator)
# Answer
# 1

这个三元运算符类似于C编程语言。


 (sunday == 'True') ? sun="<span class='label label-success'>S</span>" : sun="<span class='label label-danger'>S</span>";

 sun = "<span class='label " + ((sunday === 'True' ? 'label-success' : 'label-danger') + "'>S</span>"

嘿,伙计,记住js是通过求值为真或假来工作的,对吧?

让我们用一个三元运算符:

questionAnswered ? "Awesome!" : "damn" ;

首先,js检查questionAnswered是真还是假。

如果为真(?)你会得到“太棒了!”

否则(:)你会得到“damn”;

希望这对朋友有帮助:)


x = 9
y = 8

一元

++x
--x

二进制

z = x + y

三元

2>3 ? true : false;
2<3 ? true : false;
2<3 ? "2 is lesser than 3" : "2 is greater than 3";

条件(三元)操作符是唯一的JavaScript操作符 这需要三个操作数。这个运算符经常被用作 if语句的快捷方式。

condition ? expr1 : expr2 

如果condition为真,运算符返回expr1的值; 否则,它返回expr2的值。

function fact(n) {
  if (n > 1) {
    return n * fact(n-1);
  } else {
    return 1;
  }
  // we can replace the above code in a single line of code as below
  //return (n != 1) ? n * fact(n - 1) : 1;
}
console.log(fact(5));

如需更多说明,请阅读MDN文档链接


我们可以使用Jquery以及长度的例子如下:

假设我们有一个GuarantorName文本框,它有值,并且想要获取姓和名-它可能是空的。 所以不是

        var gnamesplit = $("#txtGuarantorName").val().split(" ");
        var gLastName = "";
        var gFirstName = "";
        if(gnamesplit.length > 0 ){
           gLastName  = gnamesplit[0];        
        }
        if(gnamesplit.length > 1 ){
           gFirstName = gnamesplit[1];        
        }

We can use below code with Jquery with minimum code var gnamesplit = $("#txtGuarantorName").val().split(" "); var gLastName = gnamesplit.length > 0 ? gnamesplit[0] : ""; var gFirstName = gnamesplit.length > 1 ? gnamesplit[1] : ""; $("#txtLastName").val(gLastName); $("#txtFirstName").val(gFirstName); <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div > Guarantor Name: <input type="text" id="txtGuarantorName" value="ASP.NET Core" /><br/> <br/> <br/> First Name: <input type="text" id="txtLastName" value="ASP.NET Core" /> Last Name: <input type="text" id="txtFirstName" value="ASP.NET Core" /> </div>


这可能不是最优雅的方式。但是对于不熟悉三元运算符的人来说,这可能是有用的。我个人倾向于使用一行程序回退,而不是使用条件块。

  // var firstName = 'John'; // Undefined
  var lastName = 'Doe';

  // if lastName or firstName is undefined, false, null or empty => fallback to empty string
  lastName = lastName || '';
  firstName = firstName || '';

  var displayName = '';

  // if lastName (or firstName) is undefined, false, null or empty
  // displayName equals 'John' OR 'Doe'

  // if lastName and firstName are not empty
  // a space is inserted between the names
  displayName = (!lastName || !firstName) ? firstName + lastName : firstName + ' ' + lastName;


  // if display name is undefined, false, null or empty => fallback to 'Unnamed'
  displayName = displayName || 'Unnamed';

  console.log(displayName);

三元运算符


三元表达式在JS中非常有用,尤其是在React中。这里有一个简单的答案来回答许多好的、详细的问题。

condition ? expressionIfTrue : expressionIfFalse

将expressionIfTrue视为OG if语句表示为真; 把expressionifalse当作else语句。

例子:

var x = 1;
(x == 1) ? y=x : y=z;

检查x的值,如果为真,返回第一个y=(value),如果为假,返回冒号后的第二个y=(value)。


大部分答案都是正确的,但我想再补充一点。三元操作符是右结合的,这意味着它可以以以下方式链接,如果…else-if…else-if…else:

function example() {
    return condition1 ? value1
         : condition2 ? value2
         : condition3 ? value3
         : value4;
}

等价于:

function example() {
    if (condition1) { return value1; }
    else if (condition2) { return value2; }
    else if (condition3) { return value3; }
    else { return value4; }
}

详情请点击这里


如果你在javascript中有一个条件检查实例函数。三元算符易于使用。只需要一行就可以实现。 例:

    private module : string ='';
    private page:boolean = false;
    async mounted(){
     if(this.module=== 'Main')
    {
    this.page = true;}
    else{
    this.page = false;
    }
}

只有一个条件的函数可以写成这样。

this.page = this.module=== 'Main' ?true:false;

条件?if True: False


三元运算符只是一种写if else条件的简单方法。它在ReactJS中被广泛使用。

例如:

Const x = 'foo'; //用这个代替if else X === 'foo' ?alert('True'): alert('False'); / /输出 //提示框将提示'True'


利用三元运算符,编写程序打印偶数,如果数字是偶数,打印奇数,如果数字是奇数。

设a = 13; 令b = a%2!= = 0 ?“是奇数”:“是偶数”; // let b = a%2==0 ?“是偶数”:“是奇数”; console.log (a + " " +);

输出:13为奇数