前端每日一题#15

前端人

共 1782字,需浏览 4分钟

 ·

2021-03-20 16:25


关注公众号 前端人,回复“加群

添加无广告优质学习群

日题目

以下值输出什么?

const hocCoBan = {};

Object.defineProperty(hocCoBan, "domain", {
    value"hoccoban.com",    
})

async function App({year, age})
 return year - age + hocCoBan.domain.length;
}

App({year2021age30}).then((r)=>{
  console.log(r)
});

A: 2051

B: 2001

C: 30

D: 2003

解析

答案选D

上面的代码段似乎很复杂,涉及到我们如何利用Object.defineProperty向对象添加键和值的优势hocCoBan。

实际上,Object.defineProperty它具有几个方便的功能,这些功能使我们可以在某些情况下控制对象的行为,在这些情况下,我们要确保创建的对象是否可变,是否可迭代(使用for..in)等等。

例如,如果使用configurable: false声明对象时进行设置Object.defineProperty,则无法使用delete运算符删除该对象的属性。我们也不能更改该属性的值。

阅读上面的代码时,第二条“带走”消息是解包对象技术,或更常见的术语是破坏对象。假设您有一个带有两个称为year和的键的对象age,然后可以通过使用如下的销毁对象技术来获得它们:

{year, age} = theOBject;

在上面的代码中,在声明函数时App,我们还使用销毁对象技术从对象中获取键并将它们用作参数。

如果您在使用关键字时熟悉JavaScript中的异步代码,async,那么了解为什么我们需要使用它then来App调用函数就没什么大不了的了。实际上,async总是返回一个承诺,因此我们需要使用then方法来获取所需的数据。

代码流为:

2021-30 + "hoccoban.com".length(即12)。

最终结果是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 20 1 2

B: 0 1 23 3 3

C: 3 3 30 1 2

玩法介绍

评论区给出你的答案,并且点个在看每天的每日一题答案由下一天给出,欢迎参与每日一题,一周连续答对5题者,周六任性的鬼哥抽取送前端书籍一本(根据中奖者喜欢自行选择一本

题库小程序

最后

大家记得关注公众号后,置顶公众号,才能第一时间接收前端每日一题的文章推送

  • 回复资料包领取我整理的进阶资料包
  • 回复加群,加入前端进阶群
  • console.log("点赞===看===置顶公众号")
  • Bug离我更远了,下班离我更近了



浏览 19
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报