每週工做日會出一道小題,一週五題,週六分享會覆盤結束後本人會將問題與答案整理出來~方便羣內小夥伴複習。javascript
這裏只整理簡短的解析與答案(可是我會在每週覆盤中詳細講解以及擴展),具體內容不懂的話能夠谷歌或者私我,固然仍是建議你們多多思考多多討論。css
天天第一名正確回答並解釋完整的同窗能夠得到羣主的獎勵紅包前端
async function f() {
await p;
fn();
}
=>
function f() {
return Promise.resolve(p).then(() => {
fn();
})
}
複製代碼
p 當即執行,fn 爲 Promise resolve後的回調,推入微任務隊列java
答案:數組
script start async1 start async2 promise1 script end async1 end promise2 setTimeoutpromise
核心代碼爲 var a = b = 3
,其等同於async
b = 3;
var a = b;
複製代碼
答案:oop
undefinedui
numberthis
答案: 10 2
class ManagerClass {
constructor(name) {
this.taskList = [];
console.log(`Hi I am ${name}`);
setTimeout(() => this.next(), 0);
}
sleepFirst(time) {
let fn = () => {
console.log(`Sleep ${time}s...`);
setTimeout(() => {
this.next();
}, time * 1000);
}
this.taskList.unshift(fn);
return this;
}
sleep(time) {
let fn = () => {
console.log(`Sleep ${time}s...`);
setTimeout(() => {
this.next();
}, time * 1000);
}
this.taskList.push(fn);
return this;
}
eat(name) {
let fn = () => {
console.log(`I am eating ${name}`);
this.next();
}
this.taskList.push(fn);
return this;
}
next() {
let fn = this.taskList.shift();
fn && fn();
}
}
function Manager(name) {
return new ManagerClass(name);
}
Manager('AddOne').eat('breakfast').eat('lunch').sleepFirst(2).sleep(1).eat('dinner');
複製代碼
請用一種簡單方案實現如圖效果
第一種:繪製三角形後定位到左上角
第二種:漸變
background:linear-gradient(135deg, #F3AC3C 100px, #0B2429 0);
複製代碼
使用 requestAnimationFrame 實現一個 setInterval
function setInterval(func, interval) {
let last = +new Date();
let timer;
const loop = () => {
let now = +new Date();
timer = window.requestAnimationFrame(loop);
if(now - last >= interval) {
last = now;
func(timer);
}
}
timer = window.requestAnimationFrame(loop);
return timer;
}
let count = 0;
setInterval(timer => {
console.log(1);
count++;
if(count === 5) cancelAnimationFrame(timer);
}, 1000)
複製代碼
天天羣內會發一道技術小題,每週末會有視頻技術分享和前端題覆盤。
只面向前端大學生,但願積極活躍的你進羣聊生活聊技術聊Idea。
歡迎大學生前端進羣交流呀 ~ 小羣人數很少,進羣就是朋友,之後規模也會限制在50人左右~