Javascript 当有一个“时,我可以使用三元运算符吗?”;return";从条件来看?
我正在尝试调用一个过程,以转到另一个状态并获得此返回。以前我是这样编码的:Javascript 当有一个“时,我可以使用三元运算符吗?”;return";从条件来看?,javascript,Javascript,我正在尝试调用一个过程,以转到另一个状态并获得此返回。以前我是这样编码的: if (self.word && row.wordId == self.word.wordId) { return this.$state.go('r.s.s.a.w.w.edit', { subjectId: self.sus.subject.id, wordId: row.wordId }); } else
if (self.word && row.wordId == self.word.wordId) {
return this.$state.go('r.s.s.a.w.w.edit', {
subjectId: self.sus.subject.id,
wordId: row.wordId
});
} else {
return this.$state.go('r.s.s.a.w.w', {
subjectId: self.sus.subject.id,
wordId: row.wordId
});
}
return self.word && row.wordId == self.word.wordId
? self.$state.go('r.s.s.a.w.w.edit', {
subjectId: self.sus.subject.id,
wordId: row.wordId
})
: self.$state.go('r.s.s.a.w.w', {
subjectId: self.sus.subject.id,
wordId: row.wordId
});
}
现在我将其编码如下:
if (self.word && row.wordId == self.word.wordId) {
return this.$state.go('r.s.s.a.w.w.edit', {
subjectId: self.sus.subject.id,
wordId: row.wordId
});
} else {
return this.$state.go('r.s.s.a.w.w', {
subjectId: self.sus.subject.id,
wordId: row.wordId
});
}
return self.word && row.wordId == self.word.wordId
? self.$state.go('r.s.s.a.w.w.edit', {
subjectId: self.sus.subject.id,
wordId: row.wordId
})
: self.$state.go('r.s.s.a.w.w', {
subjectId: self.sus.subject.id,
wordId: row.wordId
});
}
是否有人可以确认这是一种有效的方法,或者我应该在self之前返回。$state.go?看起来您缺少一些括号:
(self.word && row.wordId == self.word.wordId)
? return this.$state.go('r.s.s.a.w.w.edit', {
subjectId: self.sus.subject.id,
wordId: row.wordId
})
: return this.$state.go('r.s.s.a.w.w', {
subjectId: self.sus.subject.id,
wordId: row.wordId
});
但我知道你为什么要这么做?这会降低代码的可读性。
你不需要它。您可以删除“else”:
函数返回“if”,因此不需要其他函数。据我所知,您的示例是相同的。然而,我更喜欢第一个的可读性 在您的具体情况下(不是作为一般解决方案),我可能会这样写:
var whereNext = self.word && row.wordId == self.word.wordId
? 'r.s.s.a.w.w.edit'
: 'r.s.s.a.w.w';
return this.$state.go(whereNext, {
subjectId: self.sus.subject.id,
wordId: row.wordId
});
甚至
var edit = self.word && row.wordId == self.word.wordId ? '.edit' : '';
return this.$state.go('r.s.s.a.w.w' + edit, {
subjectId: self.sus.subject.id,
wordId: row.wordId
});
“括号”是不必要的,但是您的第二个示例更易于阅读。我认为您以前的代码很容易阅读和理解。那么为什么是三元呢?当然你可以试一下。在大多数情况下,三元只用于为同一个变量分配两个不同的值(例如:if(boolean)?true:false),特别是对于一行条件。像您这样转换“复杂”if条件(在许多行上)是不太可读的。喜欢阿马丹建议的另一种方法。