先来回顾一下上期的问题及答案:
2023年6月6日
1. if(a == '1' && a == '2' && a == '3')
可能为 true吗?
可以,通过自定义对象的属性访问器(getter)可以实现。以下是一种可能的解决方案:
let a = {
value: 1,
toString() {
return this.value++;
}
};
if (a == '1' && a == '2' && a == '3') {
console.log('条件成立');
}
在这个示例中,对象 a
的属性访问器 toString()
在每次比较时会自增 value
的值,因此可以使条件成立。
2. 在 CSS 中实现居中有哪些方式?
水平居中:
使用
text-align: center
将文本居中对齐。使用
margin: 0 auto
将块级元素水平居中。使用 Flexbox 布局,将容器的
justify-content
设置为center
。使用 Grid 布局,将容器的
justify-items
和align-items
设置为center
。
垂直居中:
使用
line-height
将单行文本垂直居中。使用 Flexbox 布局,将容器的
align-items
设置为center
。使用 Grid 布局,将容器的
align-items
设置为center
。
水平垂直居中:
使用 Flexbox 布局,将容器的
justify-content
和align-items
设置为center
。使用 Grid 布局,将容器的
justify-items
和align-items
设置为center
。使用绝对定位和
transform
,结合top: 50%
和left: 50%
及translate(-50%, -50%)
的方式实现居中。
3. 讲解Promise.all
和 Promise.race
。
Promise.all
接收一个 Promise 数组作为参数,返回一个新的 Promise 对象。它会等待所有的 Promise 都被解决(resolved)或有一个 Promise 被拒绝(rejected)。只有当所有 Promise 都解决时,Promise.all
才会返回一个解决值组成的数组;如果任何一个 Promise 被拒绝,它会立即拒绝并返回被拒绝的原因。Promise.race
也接收一个 Promise 数组作为参数,返回一个新的 Promise 对象。它会等待第一个解决或拒绝的 Promise,并将其解决值或拒绝原因作为结果。无论第一个 Promise 是解决还是拒绝,Promise.race
都会返回相应的结果。
以下是使用 Promise.all
和 Promise.race
的示例:
// 使用 Promise.all
const promise1 = new Promise((resolve) =>
setTimeout(() => resolve('Promise 1'), 2000));
const promise2 = new Promise((resolve) => setTimeout(() => resolve('Promise 2'), 1000));
Promise.all([promise1, promise2]).then((values) => {
console.log(values); // ['Promise 1', 'Promise 2']
});
// 使用 Promise.race
const promise3 = new Promise((resolve) => setTimeout(() => resolve('Promise 3'), 2000));
const promise4 = new Promise((resolve) => setTimeout(() => resolve('Promise 4'), 1000));
Promise.race([promise3, promise4]).then((value) => {
console.log(value); // 'Promise 4'
});
在上述示例中,Promise.all
等待所有的 Promise 都解决后返回解决值的数组,而 Promise.race
则返回第一个解决或拒绝的 Promise 的结果。
2023年6月7日
问题:在 Vue.js 中,什么是组件间通信?请列举并简要解释 Vue.js 中常用的组件通信方式。
问题:在 CSS 中,介绍一下 Flexbox 布局和 Grid 布局,并比较它们之间的区别和适用场景。
问题:解释一下前端中的深拷贝(Deep Copy)和浅拷贝(Shallow Copy)的概念以及它们之间的区别。请给出至少一种实现深拷贝的方法。
上面问题的答案会在第二天的公众号推文中公布,大家可以关注公众号:程序员每日三问,第一时间获得推送内容。
学习不打烊,充电加油只为遇到更好的自己,每天早上9点纯手工发布面试题(死磕自己,愉悦大家) 希望大家在这浮夸的程序员圈里保持冷静,每天坚持花20分钟来学习与思考,在千变万化,类库层出不穷的今天,不要等到找工作时才狂刷题,提倡每日学习。