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


当前回答

这是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目前仅有的一个功能。

其他回答

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

例子

?:操作符可以用作 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目前仅有的一个功能。

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

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

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

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

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

var insurancePremium = age > 21 ? 100 : 200;

而不是:

var insurancePremium;

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

我们可以使用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>