繁体   English   中英

if-else 语句的简写

[英]Shorthand for if-else statement

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

var name = "true";

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

但是有没有办法让这些陈述更短? ? "true" : "false" ? "true" : "false" ……

使用三元:? 运算符[规格]

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

三元运算符让我们可以完全按照您的需要编写速记if..else语句。

看起来像:

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

? - 三元运算符本身

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

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

所以简而言之(question)?(result if true):(result is false) ,如您所见 - 它返回表达式的值,因此我们可以像上面的示例一样简单地将其分配给变量。

您可以将对象用作地图:

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

这也适用于许多选项

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

(获得参考的人的奖励点)

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

尝试这个

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" ;

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

?: 操作员

如果您想缩短If/else ,您可以使用?:运算符:

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

例如:

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

在这种情况下else部分是强制性的。

我看到这种用于空/未定义检查的简写格式,例如:

const avatarName = user.firstname ? user.firstname : user.lastname;

但是在这种情况下,您可以简单地使用:

const avatarName = user.firstname ?? user.lastname;

或者

const avatarName = user.firstname || user.lastname;

要查看差异请查看

&& 操作员

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

condition && action;

例如:

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

仅供参考:您必须尽量避免使用 if-else 或至少减少使用它,并尝试用多态或继承来替换它。 成为反如果的家伙。

如果您的 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 ];

此方法也可以使用Benjamin 说明的对象和属性来实现。

试试这个方法;

速记法:

 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

尝试这个

 var name = "true"; var hashname; name ? hashname = "Y" : !name ? hashname = "N" : "" console.log(hashname)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM