这是我参与更文挑战的第11天,活动详情查看:更文挑战
大家好,我是@Always_positive,一个认真学习,坚持梦想的博主,希望和大家一起学习,一起进步。
126. 输出什么?
function getFine(speed, amount) { const formattedSpeed = new Intl.NumberFormat({ 'en-US', { style: 'unit', unit: 'mile-per-hour' } }).format(speed) const formattedAmount = new Intl.NumberFormat({ 'en-US', { style: 'currency', currency: 'USD' } }).format(amount) return `The driver drove ${formattedSpeed} and has to pay ${formattedAmount}` } console.log(getFine(130, 300))
答:B,本题主要考察Intl.NumberFormat的用法,意在输出指定类型的字符串,所以选B。
127. 输出什么?
const spookyItems = ["👻", "🎃", "🕸"]; ({ item: spookyItems[3] } = { item: "💀" }); console.log(spookyItems);
答:B,本题在解构对象的时候,对数组进行了赋值,所以选B。
128. 输出什么?
const name = "Lydia Hallie"; const age = 21; console.log(Number.isNaN(name)); console.log(Number.isNaN(age)); console.log(isNaN(name)); console.log(isNaN(age));
答:C,本题主要是考查我们对Number.isNaN和isNaN这两种API的用法区别的认识,前者不仅要检查是否是非数字,还要检查是否等于NaN,后者则只用检查是否是非数字,所以最终的结果选C。
129. 输出什么?
const randomValue = 21; function getInfo() { console.log(typeof randomValue); const randomValue = "Lydia Hallie"; } getInfo();
答:D,这种问题属于考查临时性死区的问题,在const形成的块级作用域中,变量声明提升了,但是并未初始化,此时调用会产生一个临时性死区,一旦调用就会报错。
130. 输出什么?
const myPromise = Promise.resolve("Woah some cool data"); (async () => { try { console.log(await myPromise); } catch { throw new Error(`Oops didn't work`); } finally { console.log("Oh finally!"); } })();
答:C,本题并没有太多的坑,只要知道正常的async和await的用法,即可知道选C。
131. 输出什么?
const emojis = ["🥑", ["✨", "✨", ["🍕", "🍕"]]]; console.log(emojis.flat(1));
答:B,这里的flat(1),我们可以理解为将数组降维处理,去掉数组里面的一维数组,测试案例看这个图:,所以选B。
132. 输出什么?
class Counter { constructor() { this.count = 0; } increment() { this.count++; } } const counterOne = new Counter(); counterOne.increment(); counterOne.increment(); const counterTwo = counterOne; counterTwo.increment(); console.log(counterOne.count); 复制代码
答:D,本题中counterTwo和counterOne指向的是同一片对象,所以对counterTwo的加就是对counterOne的加,所以最终的结果是3.
133.输出什么?
const myPromise = Promise.resolve(Promise.resolve("Promise!")); function funcOne() { myPromise.then(res => res).then(res => console.log(res)); setTimeout(() => console.log("Timeout!"), 0); console.log("Last line!"); } async function funcTwo() { const res = await myPromise; console.log(await res); setTimeout(() => console.log("Timeout!"), 0); console.log("Last line!"); } funcOne(); funcTwo(); 复制代码
答:D,本题主要是考查事件循环机制,详情请看我的专栏,首先调用栈执行第一个函数中的同步代码,然后微任务Promise,然后开始执行第二个函数,因为await关键字的存在,函数会一直等到Promise的状态变为resolved才会继续执行同步代码,所以打印了Promise,然后执行同步代码Last line,当调用栈为空的时候,最后执行两个宏任务setTimeout,先1后2.
134. 如何在index.js中调用sum.js中的sum方法?
// sum.js export default function sum(x) { return x + x; } // index.js import * as sum from "./sum"; 复制代码
答:C,本题主要是考查我们对通过import * 导入一个默认暴露函数的理解,只有通过C是可以的。
135. 输出什么?
const handler = { set: () => console.log("Added a new property!"), get: () => console.log("Accessed a property!") }; const person = new Proxy({}, handler); person.name = "Lydia"; person.name; 复制代码
答:C,本题主要考查我们对Proxy对象的用法熟悉程度,通过该API,我们可以给对象添加自定义行为,当给对象设置值的时候,set方法会被调用,当调用对象的时候,get方法将会被调用。