这里有几个问题。这是来自 Wes Bos 的 30 天 JavaScript 类(class)。
- 为什么三元运算符(已注释掉)会导致此错误?
- 为什么我的解决方案不正确?
挑战
const people = [
{ name: 'Wes', year: 1988 },
{ name: 'Kait', year: 1986 },
{ name: 'Irv', year: 1970 },
{ name: 'Lux', year: 2015 }
];
// Array.prototype.some() // is at least one person 19 or older?
// Array.prototype.every() // is everyone 19 or older?
韦斯的解决方案
const isOlderThan19 = people.some(function(person) {
const currentYear = new Date().getFullYear();
// (currentYear - person.year >= 19) ? true : false
if (currentYear - person.year >= 19) {
return true;
}
});
我的解决方案
const isOlderThan19 = (element) => {
let age = new Date().getFullYear() - element.year;
age >= 19;
}
console.log(people.some(isOlderThan19));
我尝试记录正在控制台设置的年龄。除一名人员外,其他人均超过 19 岁,但返回 false。我试图理解为什么。
最佳答案
1- 三元运算符前面没有 return
,因此该函数默认返回 undefined
,这是不希望的。
2- isOlderThan19
没有返回任何内容,您可能在 age >= 19
两个示例都因缺少 return
语句而失败。
关于javascript - 为什么带有 some 方法的三元运算符会使该语句为假?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61901617/