if-else语句的简写

问题描述 投票:33回答:6

我有一些带有很多类似if / else语句的代码:

var name = "true";

if (name == "true") {
    var hasName = 'Y';
} else if (name == "false") {
    var hasName = 'N';
};

但是有没有一种方法可以使这些语句更短?类似于? "true" : "false" ...

javascript if-statement
6个回答
101
投票

使用ternary :? operator :?

[spec]

三元运算符使我们可以完全根据需要编写速记var hasName = (name === 'true') ? 'Y' :'N'; 语句。

它看起来像:

if..else-我们的条件

(name === 'true')-三元运算符本身

?-条件为真时的结果

['Y'-条件为假时的结果

简而言之,就是'N',如您所见-它返回表达式的值,因此我们可以像上面的示例一样简单地将其分配给变量。


21
投票

您可以将对象用作地图:

(question)?(result if true):(result is false)

这在许多选项上也可以很好地缩放

  var hasName = ({
        "true"  : "Y",
        "false" : "N"
  })[name];

(获得参考的人们的奖励积分)

注意:对于指示真值的变量,应使用实际的布尔值而不是字符串值“ true”。


15
投票

尝试此

  var hasName = ({
        "true"          : "Y",
        "false"         : "N",
        "fileNotFound"  : "O"
  })[name];

4
投票

尝试方式

hasName = name ? 'Y' : 'N';

甚至尝试使用var hasName = 'N'; if (name == "true") { hasName = 'Y'; } 之类的东西>>

ternary operator

甚至您也可以尝试

var hasName = (name == "true") ? "Y" : "N" ;

由于名称具有var hasName = (name) ? "Y" : "N" ; Yes,但我不确定该名称。


4
投票

如果您在if-else中只有No个条件,那么这里的大多数答案都可以正常工作。对于更多我想您想要的东西,您将使用数组。在two数组中每个与之对应的元素名称中,您都会在names数组中具有精确相同的索引


0
投票

尝试此方法;

© www.soinside.com 2019 - 2024. All rights reserved.