我有一些带有很多类似if / else语句的代码:
var name = "true";
if (name == "true") {
var hasName = 'Y';
} else if (name == "false") {
var hasName = 'N';
};
但是有没有一种方法可以使这些语句更短?类似于? "true" : "false"
...
使用ternary :?
operator :?
。
[spec]
三元运算符使我们可以完全根据需要编写速记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];
(获得参考的人们的奖励积分)
注意:对于指示真值的变量,应使用实际的布尔值而不是字符串值“ true”。
尝试此
var hasName = ({
"true" : "Y",
"false" : "N",
"fileNotFound" : "O"
})[name];
尝试方式
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
,但我不确定该名称。
如果您在if-else中只有No
个条件,那么这里的大多数答案都可以正常工作。对于更多我想您想要的东西,您将使用数组。在two
数组中每个与之对应的元素名称中,您都会在names
数组中具有精确相同的索引
尝试此方法;