为什么带有 some 方法的三元运算符会使此语句为假?
Why does the ternary operator with the some method make this statement false?
这里有几个问题。这是来自 Wes Bos 的 JavaScript 课程的 30 天。
- 为什么三元运算符(注释掉)会导致错误?
- 为什么我的解决方案不正确?
挑战
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 岁,但 returns 错误。我想知道为什么。
1- 三元运算符前面没有return
,所以函数默认为return undefined
,这是不需要的
2- isOlderThan19
没有 returning 任何东西,你可能错过了 age >= 19
之前的 return 字
由于缺少 return
语句,两个示例都失败了。
试试这个
const isOlderThan19 = (element) => {
let age = new Date().getFullYear() - element.year;
return age >= 19;
}
console.log(people.some(isOlderThan19));
您的三元语句实际上需要 return,而不仅仅是布尔值
(currentYear - person.year >= 19) ? return true : return false
或更准确地说
const isOlderThan19 = people.some(function(person) {
const currentYear = new Date().getFullYear();
return (currentYear - person.year >= 19) ? true : false
});
这里有几个问题。这是来自 Wes Bos 的 JavaScript 课程的 30 天。
- 为什么三元运算符(注释掉)会导致错误?
- 为什么我的解决方案不正确?
挑战
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 岁,但 returns 错误。我想知道为什么。
1- 三元运算符前面没有return
,所以函数默认为return undefined
,这是不需要的
2- isOlderThan19
没有 returning 任何东西,你可能错过了 age >= 19
由于缺少 return
语句,两个示例都失败了。
试试这个
const isOlderThan19 = (element) => {
let age = new Date().getFullYear() - element.year;
return age >= 19;
}
console.log(people.some(isOlderThan19));
您的三元语句实际上需要 return,而不仅仅是布尔值
(currentYear - person.year >= 19) ? return true : return false
或更准确地说
const isOlderThan19 = people.some(function(person) {
const currentYear = new Date().getFullYear();
return (currentYear - person.year >= 19) ? true : false
});