47

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

var name = "true";

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

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

4

7 回答 7

130

使用三元:?运算符 [spec]

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

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

看起来像:

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

? - 三元运算符本身

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

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

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

于 2013-08-16T08:46:26.703 回答
28

您可以将对象用作地图:

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

这也适用于许多选项

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

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

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

于 2013-08-16T08:48:51.623 回答
21

尝试这个

hasName = name ? 'Y' : 'N';
于 2013-08-16T08:49:13.137 回答
7

试试喜欢

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

甚至尝试ternary operator喜欢

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

即使是简单的你也可以试试

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

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

于 2013-08-16T08:46:26.483 回答
5

two如果您的 if-else 中只有条件,这里的大多数答案都可以正常工作。对于我猜你想要的更多信息,你将使用数组。每个命名数组中对应的元素,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 说明的对象和属性来实现。

于 2013-08-16T08:50:10.850 回答
4

?: 操作员

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

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

例如:

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

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

&& 操作员

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

condition && action;

例如:

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

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

于 2020-08-17T08:19:46.470 回答
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

于 2020-06-07T04:03:57.557 回答