前端每日一题#19
关注公众号 前端人,回复“加群”
添加无广告优质学习群
今日题目
下面代码的输出是什么?
var p1 = Promise.resolve( 1 );
var p2 = Promise.resolve( p1 );
var p3 = new Promise(function(resolve, reject){
resolve(1);
});
var p4 = new Promise(function(resolve, reject){
resolve(p1);
});
console.log(p1 === p2);
console.log(p1 === p3);
console.log(p1 === p4);
console.log(p3 === p4);
p4.then(function(value){
console.log('p4=' + value);
});
p2.then(function(value){
console.log('p2=' + value);
})
p1.then(function(value){
console.log('p1=' + value);
})
A:true false false false p2=1 p1=1 p4=1
B:false true true true p4=1 p2=1 p1=1
C:false false false false p4=1 p2=1 p1=1
D:false false false false p1=1 p2=1 p4=1
答案:A
Promise.resolve(...)可以接收一个值或者是一个Promise对象作为参数。 当参数是普通值时,它返回一个resolved状态的Promise对象,对象的值就是这个参数; 当参数是一个Promise对象时,它直接返回这个Promise参数。 因此,p1 === p2。但通过new的方式创建的Promise对象都是一个新的对象,因此后面的三个比较结果都是false。 另外,为什么p4的then最先调用,但在控制台上是最后输出结果的呢? 因为p4的resolve中接收的参数是一个Promise对象p1,resolve会对p1”拆箱“,获取p1的状态和值,但这个过程是异步的
今日题目
下面代码的输出是什么?
class Chameleon {
static colorChange(newColor) {
this.newColor = newColor;
}
constructor({ newColor = "green" } = {}) {
this.newColor = newColor;
}
}
const freddie = new Chameleon({ newColor: "purple" });
freddie.colorChange("orange");
A: orange
B: purple
C: green
D: TypeError
玩法介绍
评论区给出你的答案,并且点个在看
,每天的每日一题答案由下一天给出,欢迎参与每日一题,一周连续答对5题者,周六任性的鬼哥抽取送前端书籍一本(根据中奖者喜欢自行选择一本)
玩法介绍
评论区给出你的答案,并且点个在看
,每天的每日一题答案由下一天给出,欢迎参与每日一题,一周连续答对5题者,周六任性的鬼哥抽取送前端书籍一本(根据中奖者喜欢自行选择一本)
题库小程序
最后
大家记得关注公众号后,置顶公众号
,才能第一时间接收前端每日一题
的文章推送
公众号里回复关键词 资料包
领取我整理的进阶资料包公众号里回复关键词 加群
,加入前端进阶群文章点个 在看
,支持一下把!
点击关注我们↓
评论