使用&&将返回第一个条件为假的值。
如果每个操作数的计算值都为true,
则返回最后一个计算过的表达式。
let one = 1, two = 2, three = 3;
console.log(one && two && three);
// Result: 3console.log(0 && null); // Result: 0
使用||将返回第一个条件为真的值。
如果每个操作数的计算结果都为false,
则返回最后一个计算过的表达式。
let one = 1, two = 2, three = 3;
console.log(one || two || three);
// Result: 1console.log(0 || null); // Result: null
需求:是否遇到过访问嵌套对象属性的问题?你可能不知道对象或其中一个子属性是否存在,这可能会导致令人沮丧的错误。假设我们想在this.state中访问一个名为data的属性,但是在我们的程序成功返回一个获取请求之前,data 是未定义的。根据我们使用它的位置,调用this.state.data可能会阻止我们的应用程序运行。为了解决这个问题,我们可以将其做进一步的判断:
if (this.state.data) { return this.state.data; } else { return 'Fetching Data'; } //但这似乎很重复。'或' 运算符提供了更简洁的解决方案 return (this.state.data || 'Fetching Data');
需求:
假设我们想返回一个变量的长度,但是我们不知道变量的类型。我们可以使用if/else语句来检查foo是可接受的类型,但是这可能会变得非常冗长。或运行可以帮助我们简化操作:
return (foo || []).length
如果变量foo是true,它将被返回。否则,将返回空数组的长度:0。