前端每日一题#19

前端人

共 2709字,需浏览 6分钟

 ·

2021-03-24 12:15


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

添加无广告优质学习群

今日题目

下面代码的输出是什么?

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题者,周六任性的鬼哥抽取送前端书籍一本(根据中奖者喜欢自行选择一本

题库小程序

最后

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


  1. 公众号里回复关键词资料包领取我整理的进阶资料包
  2. 公众号里回复关键词加群,加入前端进阶群
  3. 文章点个在看,支持一下把!

点击关注我们↓



浏览 30
点赞
评论
收藏
分享

手机扫一扫分享

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

手机扫一扫分享

分享
举报