JS对象练习:修复feedPet函数问题求助
修复
feedPet函数问题 问题分析
原函数存在两个核心问题:
foods.push(food)的返回值是数组的新长度,而非添加后的食物列表,这会导致输出中出现数字而非食物名称- 示例注释存在笔误(如把
Hydra/Hippogriff误写为Hyrda),但函数逻辑本身的问题才是重点
修复后的代码
function feedPet(name) { const foods = []; return (food) => { foods.push(food); return `Fed ${name} ${foods.join(', ')}.`; } }
代码说明
- 先执行
foods.push(food)将食物存入数组,此处不需要使用push的返回值(因为它返回的是数组长度) - 使用模板字符串拼接结果,通过
foods.join(', ')自动处理食物列表的格式:单个食物时直接显示,多个食物时用逗号加空格分隔 - 原示例中的注释笔误已修正,运行时会正确显示传入的宠物名称
测试验证
const feedHydra = feedPet('Hydra'); console.log(feedHydra('bones')); // Fed Hydra bones. console.log(feedHydra('Hercules')); // Fed Hydra bones, Hercules. const feedHippogriff = feedPet('Hippogriff'); console.log(feedHippogriff('worms')); // Fed Hippogriff worms. console.log(feedHippogriff('crickets')); // Fed Hippogriff worms, crickets. console.log(feedHippogriff('chicken')); // Fed Hippogriff worms, crickets, chicken.
内容的提问来源于stack exchange,提问作者Ezequiel Pratissoli
相关产品推荐
相关产品推荐

