Javascript if-else语句的简写

Javascript if-else语句的简写,javascript,if-statement,Javascript,If Statement,我有一些代码,其中包含许多类似于以下内容的if/else语句: var name = "true"; if (name == "true") { var hasName = 'Y'; } else if (name == "false") { var hasName = 'N'; }; 但有没有办法缩短这些陈述?类似于?“真”:“假”…试试看 var hasName = 'N'; if (name == "true") { hasName = 'Y'; } 甚至可以

我有一些代码,其中包含许多类似于以下内容的if/else语句:

var name = "true";

if (name == "true") {
    var hasName = 'Y';
} else if (name == "false") {
    var hasName = 'N';
};
但有没有办法缩短这些陈述?类似于
?“真”:“假”

试试看

var hasName = 'N';
if (name == "true") {
    hasName = 'Y';
}
甚至可以尝试使用
三元运算符

var hasName = (name == "true") ? "Y" : "N" ;
即使是简单的,你也可以像这样尝试

var hasName = (name) ? "Y" : "N" ;
因为name有
,但我不确定。

使用

三元运算符允许我们编写与您想要的完全相同的速记
if..else
语句

它看起来像:

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

-三元运算符本身

'Y'
-如果条件计算结果为true,则为结果

'N'
-条件计算为false时的结果


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

您可以使用对象作为映射:

  var hasName = ({
        "true"  : "Y",
        "false" : "N"
  })[name];
这也可以很好地扩展许多选项

  var hasName = ({
        "true"          : "Y",
        "false"         : "N",
        "fileNotFound"  : "O"
  })[name];
(获得推荐人的奖励积分)

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

试试这个

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

如果您的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 ];
此方法也可以使用对象和属性来实现。

尝试此方法

速记方法:

let variable1='';
设variable2=variable1 | |“new”

console.log(变量2);//新的
?:运算符

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

condition ? action-on-true : action-on-false(else)
condition && action;
例如:

let gender = isMale ? 'Male' : 'Female';
!this.settings && (this.settings = new TableSettings());
在这种情况下,
else
部分是必需的

&操作员

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

condition ? action-on-true : action-on-false(else)
condition && action;
例如:

let gender = isMale ? 'Male' : 'Female';
!this.settings && (this.settings = new TableSettings());

仅供参考:您必须尽量避免使用if-else或至少减少使用它,并尝试使用或继承替换它。做一个家伙。

这与jQuery无关,jQuery是一个用于JavaScript的DOM操作库。为什么要使用“true”一词,而不是布尔值
true
?很抱歉,这可能与我的问题不同。它的伸缩性不是很好,请看我的答案或@BenjaminGruenbaum回答几个原因,首先,你混合了
,这就产生了一个错误的概念,即它们以某种方式表示不同的东西。其次,使用
=
运算符。此外,内联三元块比if语句更难读取(我更喜欢原始代码)并且不要在很多公司通过代码审查。另外,您的间距已关闭。@TusharGupta谢谢,伙计。@TusharGupta谢谢您修复它,我已经做了一些澄清(特别是格式化和添加到规范和参考的链接)。请随意还原您不喜欢的任何更改。@Adam-使用三个符号要求值的类型和值相同,而使用两个符号将在检查值之前进行转换:2=='2'将计算为true,即使一个是字符串,另一个是数字。2=='2'将计算为false,因为e这两个值不是同一类型。如果您需要,请在此快速演示:)(当然,地图不必是匿名的,如果您命名的话,这对于大多数不明显的情况下的可读性更好,可读代码比较短的代码更重要。虽然我们都希望编写简洁的代码,但它不应该以牺牲清晰性为代价)很好的解决方案!我没有想到。但我猜使用索引运算符将在机器代码中产生相同的if/elseif构造。@这取决于实现,但它们在智能运行时也同样快:)我使用此构造来代替开关…字符串上的大小写很多。我认为带字符串的开关LD可能同样快/慢。在任何其他情况下(整数,布尔值),开关会更快,因为CPU的ALU可以轻松地处理它。如果您必须在JavaScript中考虑这一点,我不知道。