前端每日一題#19

關注公眾號 前端人,回復“加群”
添加無廣告優(yōu)質學習群
今日題目
下面代碼的輸出是什么?
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狀態(tài)的Promise對象,對象的值就是這個參數; 當參數是一個Promise對象時,它直接返回這個Promise參數。 因此,p1 === p2。但通過new的方式創(chuàng)建的Promise對象都是一個新的對象,因此后面的三個比較結果都是false。 另外,為什么p4的then最先調用,但在控制臺上是最后輸出結果的呢? 因為p4的resolve中接收的參數是一個Promise對象p1,resolve會對p1”拆箱“,獲取p1的狀態(tài)和值,但這個過程是異步的
今日題目
下面代碼的輸出是什么?
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
玩法介紹
評論區(qū)給出你的答案,并且點個在看,每天的每日一題答案由下一天給出,歡迎參與每日一題,一周連續(xù)答對5題者,周六任性的鬼哥抽取送前端書籍一本(根據中獎者喜歡自行選擇一本)
玩法介紹
評論區(qū)給出你的答案,并且點個在看,每天的每日一題答案由下一天給出,歡迎參與每日一題,一周連續(xù)答對5題者,周六任性的鬼哥抽取送前端書籍一本(根據中獎者喜歡自行選擇一本)
題庫小程序
最后
大家記得關注公眾號后,置頂公眾號,才能第一時間接收前端每日一題的文章推送
公眾號里回復關鍵詞 資料包領取我整理的進階資料包公眾號里回復關鍵詞 加群,加入前端進階群文章點個 在看,支持一下把!
點擊關注我們↓

評論
圖片
表情
