这是我参与更文挑战的第10天,活动详情查看:更文挑战
116. 输出什么?
const person = {
name: "Lydia",
age: 21
}
const changeAge = (x = { ...person }) => x.age += 1
const changeAgeAndName = (x = { ...person }) => {
x.age += 1
x.name = "Sarah"
}
changeAge(person)
changeAgeAndName()
console.log(person)
答:C,本题主要考查函数传参和默认参数的区别,传参如果传的是引用地址,则会对这个引用产生影响,但是如果是默认参数,则是创建了一个新对象,对原引用没有影响。
117. 下面哪个选项会返回6?
function sumValues(x, y, z) {
return x + y + z;
}
答:C,本题考查我们对拓展运算符的熟悉程度,只有C选项是将数组变为了三个元素,其余选项均为一个数组,所以选C。
118. 输出什么?
let num = 1;
const list = ["🥳", "🤠", "🥰", "🤪"];
console.log(list[(num += 1)]);
答:B,本题我们需要看清的是,这不是num++,而是num+=1,所以其实打印的是list[2].
119. 输出什么?
const person = {
firstName: "Lydia",
lastName: "Hallie",
pet: {
name: "Mara",
breed: "Dutch Tulip Hound"
},
getFullName() {
return `${this.firstName} ${this.lastName}`;
}
};
console.log(person.pet?.name);
console.log(person.pet?.family?.name);
console.log(person.getFullName?.());
console.log(member.getLastName?.());
答:B,本题主要考查可选连操作符(?.),这是一个新特性,作用是如果该操作符前面的属性对象存在,则打印该属性对应的内容,如果不存在则返回undefined,至于第四个打印member的这个选项,答案应是报错的。
120. 输出什么?
const groceries = ["banana", "apple", "peanuts"];
if (groceries.indexOf("banana")) {
console.log("We have to buy bananas!");
} else {
console.log(`We don't have to buy bananas!`);
}
答:B,这是因为indexOf返回的下标是0,这是一个假值,所以触发了else.
121. 输出什么?
const config = {
languages: [],
set language(lang) {
return this.languages.push(lang);
}
};
console.log(config.language);
答:D,本题考查我们对setter的认识,这个方法存在的意义是修改对象的属性,如果调用的话返回的是undefined。
122. 输出什么?
const name = "Lydia Hallie";
console.log(!typeof name === "object");
console.log(!typeof name === "string");
答:C,本题非运算的优先级高于三个等号的优先级,所以先计算typeof name结果为字符串类型的string,取非之后,返回的是false,这个和后两个均不等,所以选C。
123. 输出什么?
const add = x => y => z => {
console.log(x, y, z);
return x + y + z;
};
add(4)(5)(6);
答:A,这题主要考查箭头函数的作用域链,所以打印的是 4 5 6,选A。
124. 输出什么?
async function* range(start, end) {
for (let i = start; i <= end; i++) {
yield Promise.resolve(i);
}
}
(async () => {
const gen = range(1, 3);
for await (const item of gen) {
console.log(item);
}
})();
答:C,本题主要是考查生成器函数和for await of这种循环的用法,首先range这个生成器函数返回了3个Promise对象,通过for await of 这种循环可以将每个promise的值打印出来,所以选C。
125. 输出什么?
const myFunc = ({ x, y, z }) => {
console.log(x, y, z);
};
myFunc(1, 2, 3);
答:D,本题主要考察对象的解构赋值,传入的应该是一个拥有x y z三个属性的对象,但是题目并未传入一个对象,所以打印的是3个undefined.