这是我参与更文挑战的第6天,活动详情查看:更文挑战
76. 输出是什么?
const { name: myName } = { name: "Lydia" }; console.log(name);
答:D,题目中的解构方式相当于将字符串的值赋给了myName,而不是name,所以下文调用name,相当于调用一个没有声明的变量。
77. 下面的函数是纯函数吗?
function sum(a, b) { return a + b; }
答:A,因为同样的输入是同样的输出,且不受输入值以外的其他信息影响。
78. 输出是什么?
const add = () => { const cache = {}; return num => { if (num in cache) { return `From cache! ${cache[num]}`; } else { const result = num + 10; cache[num] = result; return `Calculated! ${result}`; } }; }; const addFunction = add(); console.log(addFunction(10)); console.log(addFunction(10)); console.log(addFunction(5 * 2));
答:C,本题主要考查的是闭包的理解,函数首先检查cache中是否有传入的参数,有则返回无则+10然后存进去,然后返回。
79. 输出什么?
const myLifeSummedUp = ["☕", "💻", "🍷", "🍫"] for (let item in myLifeSummedUp) { console.log(item) } for (let item of myLifeSummedUp) { console.log(item) }
答:A,本题意在考查我们对for-in和for-of的理解,我们只需要记住一点,for-in遍历的是键,但是for-of遍历的是值。
80. 输出是什么?
const list = [1 + 2, 1 * 2, 1 / 2] console.log(list)
答:C,本题考查JS的默认机制。
81. 输出什么?
function sayHi(name) { return `Hi there, ${name}` } console.log(sayHi())
:B,本题由于模板字符串中没有接收到name,所以返回的是undefined,所以最终答案是B。
82. 输出是什么?
var status = "😎" setTimeout(() => { const status = "😍" const data = { status: "🥑", getStatus() { return this.status } } console.log(data.getStatus()) console.log(data.getStatus.call(this)) }, 0)
答:B,本题意在考查setTimeout函数在特定情况下的this指向问题,在上面这种情况下,this指向的是全局,全局下正好有个😎,所以本题选B。
83. 输出什么?
const person = { name: "Lydia", age: 21 } let city = person.city city = "Amsterdam" console.log(person)
答:A,仔细想想本题并未对person对象添加任何属性,所以选A。
84. 输出什么?
function checkAge(age) { if (age < 18) { const message = "Sorry, you're too young." } else { const message = "Yay! You're old enough!" } return message } console.log(checkAge(21))
答:C,这题真的挺坑的,意在考查const、let引起的块级作用域,由于块级作用域的存在,我们无法在块级作用域之外访问到声明的变量,请记住这个题。
85. 下面的代码将打印出什么?
fetch('https://www.website.com/api/user/1') .then(res => res.json()) .then(res => console.log(res))
答:C,这就是考查我们对Promise的理解程度了,必然是前一个then中回调方法返回的结果了。