if-else语句的简写

时间:2013-08-16 08:45:35

标签: javascript if-statement

我有一些代码,其中包含许多与此类似的if / else语句:

var name = "true";

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

但有没有办法缩短这些陈述?像? "true" : "false" ...

这样的东西

7 个答案:

答案 0 :(得分:86)

使用ternary :? operator [spec]

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

三元运算符让我们可以完全按照您的意愿编写简写if..else语句。

看起来像:

(name === 'true') - 我们的条件

? - 三元运算符本身

'Y' - 条件评估为真的结果

'N' - 条件评估为假的结果

所以简而言之(question)?(result if true):(result is false),你可以看到 - 它返回表达式的值,所以我们可以简单地将它分配给变量,就像上面的例子一样。

答案 1 :(得分:18)

您可以将对象用作地图:

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

这也适用于许多选项

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

(获得参考的人的加分点)

注意:你应该使用实际的布尔值而不是字符串值" true"表示真值的变量。

答案 2 :(得分:14)

试试这个

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

答案 3 :(得分:4)

尝试

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

甚至尝试ternary operator喜欢

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

即使只是你可以尝试

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

由于名称有YesNo,但我不确定。

答案 4 :(得分:3)

如果你的if-else只有two个条件,那么大多数答案都可以正常使用。对于更多,我猜你想要什么,你将使用数组。 names数组中的每个名称对应元素都会在hasNames数组中包含完全相同的索引的元素。那么这就是这四行的问题。

names = "true";
var names = ["true","false","1","2"];
var hasNames = ["Y","N","true","false"];
var intIndex = names.indexOf(name);
hasName = hasNames[intIndex ];

此方法也可以使用对象和属性illustrated by Benjamin实现。

答案 5 :(得分:1)

尝试此方法;

速记方法:

let variable1 = '';

let variable2 = variable1 || 'new'
console.log(variable2); // new

长手方法:

 let variable1 = 'ya';
 let varibale2;

 if (variable1 !== null || variable1 !== undefined || variable1 !== '')
       variable2 = variable1;

console.log(variable2); // ya

答案 6 :(得分:1)

?: Operatpr

如果要缩短If / Else,则可以使用?:运算符:

condition ? action-on-true : action-on-fasle(else)

例如:

let gender = isMale ? 'Male' : 'Female';

在这种情况下,else部分是必需的。

&&运营商

在另一种情况下,如果您只有if个条件,则可以将&&运算符用作:

condition && action;

例如:

!this.settings && (this.settings = new TableSettings());

仅供参考:您必须尝试避免使用if-else或至少减少使用它,并尝试替换为Polymorphism或继承。成为Anti-If