这是我参与更文挑战的第12天,活动详情查看:更文挑战
136. 以下哪一项会对对象person有副作用?
const person = { name: "Lydia Hallie" }; Object.seal(person);
答:A,首先我们要明白Object.seal的作用,是防止添加新属性或者对原有属性进行删除,B属于添加新属性,C属于删除原有属性,D属于将所有可枚举对象的属性的值从源对象分配到目标对象,并返回目标对象,所以属于添加,所以只有A项对person对象产生了副作用。
137. 以下哪一项会对对象person产生副作用?
const person = { name: "Lydia Hallie", address: { street: "100 Main St" } }; Object.freeze(person);
答:C,本题考查我们对Object.freeze这个API的用法的了解程度,这个冻结属于浅冻结,所以对内部对象的属性是可以修改的,比如这个street属性。
138. 输出什么?
const add = x => x + x; function myFunc(num = 2, value = add(num)) { console.log(num, value); } myFunc(); myFunc(3);
答:A,本题没什么坑,就是考查我们对默认传参的了解。
139. 输出什么?
class Counter { #number = 10 increment() { this.#number++ } getNum() { return this.#number } } const counter = new Counter() counter.increment() console.log(counter.#number)
答:D,本题考查的是ES2020的新特性,访问类的私有属性,不能通过实例直接调用,可以通过实例的方法获取到,所以选D。
140. 选择哪一个?
const teams = [ { name: "Team 1", members: ["Paul", "Lisa"] }, { name: "Team 2", members: ["Laura", "Tim"] } ]; function* getMembers(members) { for (let i = 0; i < members.length; i++) { yield members[i]; } } function* getTeams(teams) { for (let i = 0; i < teams.length; i++) { // ✨ SOMETHING IS MISSING HERE ✨ } } const obj = getTeams(teams); obj.next(); // { value: "Paul", done: false } obj.next(); // { value: "Lisa", done: false }
答:B,本题主要是考查我们队yield和yield* 的认知,yield返回的是一个值,yield*则是将函数委托到另一个生成器函数或可迭代对象,显然本题适用于后者,所以选B。
141. 输出什么?
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);
作者:Always_positive
链接:https://juejin.cn/post/6973546507563712543
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。