我有一个es6模型,在将其发布到端点之前,我想对其进行一些基本验证。我在类中写了一个简单的isValid()方法,我想返回true或false,而不是true或falsey。由于&&将返回真实的最后一个检查,因此我通过在验证检查的末尾附加 && true 来简化该功能。
export default class foo {
constructor (data = {}) {
this._id = data.id
this._name = data.name
}
isValid () {
return this._id && this._name && true
}
}
我想知道的是:这是否是在此上下文中返回真实值的适当方法?有没有更好的方法在JS中进行这种验证?我意识到有other ways会返回一个布尔型的'if'语句,但是我希望这非常简洁,并认为这可能是有效的快捷方式...
答案 0 :(得分:2)
像
一样书写 isValid () {
return this._id && this._name && true
}
它将为true
值返回truthy
,但不会为false
值返回falsy
。
要返回true或false,可以使用Boolean
构造函数,如
isValid () {
return Boolean(this._id && this._name)
}
否则您可以使用三元运算符
isValid () {
return this._id && this._name? true : false
}
演示代码段:
class foo {
constructor (data = {}) {
this._id = data.id
this._name = data.name
}
isValid () {
return Boolean(this._id && this._name)
}
}
let foo1 = new foo({ id: 1, name: 'abc'});
let foo2 = new foo({ id: 2 });
console.log(foo1.isValid(), foo2.isValid());
答案 1 :(得分:1)
您可以将!!
缩写为boolean
。
return !!(this._id && this._name)