这是我参与更文挑战的第3天,活动详情查看:更文挑战
46. 输出是什么?
let person = { name: "Lydia" }; const members = [person]; person = null; console.log(members);
答:D,很多朋友认为person改为了null,members中的person也应该变为null,其实person中存放的是对象的地址,members[0]中存放的也是这个对象的地址,person只是将地址置为了null,并不影响members[0]中存放的地址,所以本题选D。
47. 输出是什么?
const person = { name: "Lydia", age: 21 }; for (const item in person) { console.log(item); }
答:B,本题考查的是for in循环,该循环遍历的是对象的键,而对象的键在底层存放的都是字符串。
48. 输出是什么?
console.log(3 + 4 + "5");
答:B,此题考查的是运算符
49. num的值是什么?
const num = parseInt("7*6", 10);
答:C,本题想考查的是parseInt在进制转换的用法,本意是想将第一个参数转为十进制数字,但是解析到*便暂停了,所以是7.
50. 输出是什么?
[1, 2, 3].map(num => { if (typeof num === "number") return; return num * 2; });
答:C,本题考查map的用法,但是每一个元素都返回的是undefined.
51. 输出是什么?
function getInfo(member, year) { member.name = "Lydia"; year = "1998"; } const person = { name: "Sarah" }; const birthYear = "1997"; getInfo(person, birthYear); console.log(person, birthYear);
答:A,本题考查函数传参过程中是值传递还是引用传递,传递一个对象是引用传递,引用传递会影响到引用本身,但是值传递则不会。
52. 输出是什么?
function greeting() { throw "Hello world!"; } function sayHi() { try { const data = greeting(); console.log("It worked!", data); } catch (e) { console.log("Oh no an error:", e); } } sayHi();
答:D,本题考查try catch的用法,当greeting函数返回一个错误时,便不再继续执行try中的其他语句了,并将错误字符串传给e,所以最后打印的是D。
53. 输出是什么?
function Car() { this.make = "Lamborghini"; return { make: "Maserati" }; } const myCar = new Car(); console.log(myCar.make);
答:B,返回属性时,值不是构造函数设定的值,而是返回的值,所以选B
54. 输出是什么?
(() => { let x = (y = 10); })(); console.log(typeof x); console.log(typeof y);
答:A,本题考查的是立即执行函数和函数的执行顺序问题,所以本题y是number类型的,x属于undefined类型的。
55. 输出是什么?
class Dog { constructor(name) { this.name = name; } } Dog.prototype.bark = function() { console.log(`Woof I am ${this.name}`); }; const pet = new Dog("Mara"); pet.bark(); delete Dog.prototype.bark; pet.bark();
答:A,本题考查原型链的问题,原型对象中的this也是指向实例对象的,所以ABC三个选项的第一部分都是对的,通过delete方法删除了原型对象上的bark方法,所以此时再次调用bark会报错,所以此时只有A是对的。