求助:JavaScript函数无法仅输出指定对象值的问题
问题排查与修复
你的代码存在两个关键问题,导致无法得到预期输出:
1. 参数接收错误
函数定义中第二个参数是keys,但调用时你传入了多个独立的字符串参数('lisa', 'bart', 'homer'),此时keys只会拿到第一个参数'lisa',后续参数被忽略。需要用剩余参数语法...keys来接收所有后续传入的键,这样keys会变成包含所有指定键的数组。
2. 循环边界错误
循环条件i <= keys.length会导致循环多执行一次:当i等于keys.length时,keys[i]是undefined,此时访问jsObject[undefined]会输出undefined,同时超出了数组的有效索引范围(数组索引从0开始,最大索引是keys.length - 1)。需要把条件改成i < keys.length。
修复后的代码
let printValuesOf = (jsObject, ...keys) => { for (let i = 0; i < keys.length; i++) { let key = keys[i]; console.log(jsObject[key]); } } let simpsonsCatchphrases = { lisa: 'BAAAAAART!', bart: 'Eat My Shorts!', marge: 'Mmm~mmmmm', homer: "d'oh!", maggie: "(Pacifier Suck)", }; printValuesOf(simpsonsCatchphrases, 'lisa', 'bart', 'homer');
输出结果
BAAAAAART! Eat My Shorts! d'oh!
另外,函数返回undefined是正常的——JavaScript中没有显式return语句的函数默认返回undefined,这部分不需要修改。
内容的提问来源于stack exchange,提问作者JadenBotha
相关产品推荐
相关产品推荐

