前端每日一題#15

關(guān)注公眾號 前端人,回復(fù)“加群”
添加無廣告優(yōu)質(zhì)學(xué)習(xí)群
昨日題目
以下值輸出什么?
const hocCoBan = {};
Object.defineProperty(hocCoBan, "domain", {
value: "hoccoban.com",
})
async function App({year, age}){
return year - age + hocCoBan.domain.length;
}
App({year: 2021, age: 30}).then((r)=>{
console.log(r)
});
A: 2051
B: 2001
C: 30
D: 2003
解析
答案選D
上面的代碼段似乎很復(fù)雜,涉及到我們?nèi)绾卫肙bject.defineProperty向?qū)ο筇砑渔I和值的優(yōu)勢hocCoBan。
實(shí)際上,Object.defineProperty它具有幾個方便的功能,這些功能使我們可以在某些情況下控制對象的行為,在這些情況下,我們要確保創(chuàng)建的對象是否可變,是否可迭代(使用for..in)等等。
例如,如果使用configurable: false聲明對象時進(jìn)行設(shè)置Object.defineProperty,則無法使用delete運(yùn)算符刪除該對象的屬性。我們也不能更改該屬性的值。
閱讀上面的代碼時,第二條“帶走”消息是解包對象技術(shù),或更常見的術(shù)語是破壞對象。假設(shè)您有一個帶有兩個稱為year和的鍵的對象age,然后可以通過使用如下的銷毀對象技術(shù)來獲得它們:
{year, age} = theOBject;
在上面的代碼中,在聲明函數(shù)時App,我們還使用銷毀對象技術(shù)從對象中獲取鍵并將它們用作參數(shù)。
如果您在使用關(guān)鍵字時熟悉JavaScript中的異步代碼,async,那么了解為什么我們需要使用它then來App調(diào)用函數(shù)就沒什么大不了的了。實(shí)際上,async總是返回一個承諾,因此我們需要使用then方法來獲取所需的數(shù)據(jù)。
代碼流為:
2021-30 + "hoccoban.com".length(即12)。
最終結(jié)果是2003。因此正確答案是D。
今日題目
下面代碼的輸出是什么?
for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1);
}
for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1);
}A: 0 1 2 和 0 1 2
B: 0 1 2 和 3 3 3
C: 3 3 3 和 0 1 2
玩法介紹
評論區(qū)給出你的答案,并且點(diǎn)個在看,每天的每日一題答案由下一天給出,歡迎參與每日一題,一周連續(xù)答對5題者,周六任性的鬼哥抽取送前端書籍一本(根據(jù)中獎?wù)呦矚g自行選擇一本)
題庫小程序
最后
大家記得關(guān)注公眾號后,置頂公眾號,才能第一時間接收前端每日一題的文章推送
回復(fù) 資料包領(lǐng)取我整理的進(jìn)階資料包回復(fù) 加群,加入前端進(jìn)階群console.log("文章點(diǎn)贊===文章點(diǎn)在看===置頂公眾號")Bug離我更遠(yuǎn)了,下班離我更近了

