我有一些类似于这样的包含很多if/else语句的代码:
var name = "true";
if (name == "true") {
var hasName = 'Y';
} else if (name == "false") {
var hasName = 'N';
};
但是有没有一种方法可以使这些语句更短?就像? "true" : "false"
...
我有一些类似于这样的包含很多if/else语句的代码:
var name = "true";
if (name == "true") {
var hasName = 'Y';
} else if (name == "false") {
var hasName = 'N';
};
但是有没有一种方法可以使这些语句更短?就像? "true" : "false"
...
"
和'
表示字符串文字的方式是错误的,这会让人误以为它们代表不同的东西。其次,使用==
运算符是不被推荐的。此外,内联三元块比if语句更难阅读(我更喜欢原始代码),并且在许多公司的代码审查中不会通过。另外,您的间距有问题。 - Benjamin Gruenbaum你可以使用对象作为映射表:
var hasName = ({
"true" : "Y",
"false" : "N"
})[name];
这也适用于许多选项的良好扩展性
var hasName = ({
"true" : "Y",
"false" : "N",
"fileNotFound" : "O"
})[name];
(对于能够理解这个引用的人,将会获得额外的加分)
注意:在表示真值的变量中,应该使用实际的布尔值而不是字符串值 "true"。
试一下这个
hasName = name ? 'Y' : 'N';
?: 运算符
如果您想缩短 if/else
语句,可以使用 ?:
运算符,如下:
condition ? action-on-true : action-on-false(else)
例如:let gender = isMale ? 'Male' : 'Female';
在这种情况下,else
部分是必需的。
我看到这种缩写格式被用于检查null
/undefined
,例如:
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());
尝试类似于
var hasName = 'N';
if (name == "true") {
hasName = 'Y';
}
甚至可以使用三元运算符进行尝试,例如:
var hasName = (name == "true") ? "Y" : "N" ;
var 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 ];
这个方法也可以使用对象和属性来实现,就像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)
true
? - Rich Bradshaw