面试官:请问以下控制台输出的值是?
前端人
共 1094字,需浏览 3分钟
·
2021-02-06 05:04
关注公众号 前端人,回复“加群”
添加无广告优质学习群
请问以下控制台输出的值是?
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
解答
上面的代码段似乎很复杂,涉及到我们如何利用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。
本题已收录于以下刷题小程序
回复 资料包
领取我整理的进阶资料包回复 加群
,加入前端进阶群console.log("点赞===再看===快乐")
Bug离我更远了,快乐离我更近了
评论
Signale优雅的控制台日志输出工具
Signale是一个优雅漂亮、可配置的控制台日志输出工具。亮点16个开箱即用的日志工具优雅输出简洁、美观集成定时器自定义、可插拔交互模式和常规模式支持文件名、日期和时间戳范围选择支持字符串插值多个可配
Signale优雅的控制台日志输出工具
0
Jansi控制台输出彩色文字
Jansi(jAnsi)是一个Java类库,它能够让你在控制台输出色彩缤纷的文字。示例代码:AnsiConsole.systemInstall();AnsiConsole.out.println("H
Jansi控制台输出彩色文字
0