yisainan / web-interview

我是齐丶先丶森,收集整理全网面试题及面试技巧,旨在帮助前端工程师们找到一份好工作!更多详见公众号「前端面试秘籍」
MIT License
2.61k stars 507 forks source link

[选择题] 55.(单选题)下面代码的输出是什么 #1033

Open qiilee opened 4 years ago

qiilee commented 4 years ago
const person = {
  name: "Lydia Hallie",
  hobbies: ["coding"]
};

function addHobby(hobby, hobbies = person.hobbies) {
  hobbies.push(hobby);
  return hobbies;
}

addHobby("running", []);
addHobby("dancing");
addHobby("baking", person.hobbies);
console.log(person.hobbies);
A:["coding"]
B: ["coding", "dancing"]
C: ["coding", "dancing", "baking"]
D: ["coding", "running", "dancing","baking"]

答案:C

解析:

函数 addHobby 接受两个参数,hobby 和有看对象 person 中数组 hobbies 默认值的 hobbies。

首先,我们调用函数 addHobby ,并给 hobby 传递'running'以及 hobbies 传递一个空数组。因为我们给 hobbies 传递了空数组,'running' 被 添加到这个空数组。

然后,我们调用函数 addHobby ,并给 hobby 传递'dancing'。我们不向 hobbies 传递值,因此它获取其默认值---对象 person 的属性 hobbies。我们向数组 person.hobbies push dancing

最后,我们调用函数 addHobby ,并向 hobby 传递值'baking',并且向 hobbies 传递 person.hobbies。我们向数组 person.hobbies push dancing。

pushing dancing 和 baking 之后,person.hobbies 的值为['coding','dancing’,'baking']