HTML
哪些是块级元素,哪些是行内元素
块级元素:div、form、table、p、h1、ul、ol、blockquote
行内元素:span、a、img、strong、input、button、label
CSS
盒模型概念
CSS3 中的盒模型有以下两种:标准盒模型、IE(替代)盒模型。
两种盒子模型都是由 content + padding + border + margin 构成,其大小都是由 content + padding + border 决定的,但是盒子内容宽/高度(即 width/height)的计算范围根据盒模型的不同会有所不同:
- 标准盒模型:只包含
content。 - IE(替代)盒模型:
content + padding + border。
可以通过 box-sizing 来改变元素的盒模型:
box-sizing: content-box:标准盒模型(默认值)。box-sizing: border-box:IE(替代)盒模型。
JavaScript
基本的数据类型介绍,及值类型和引用类型的理解
在 JS 中共有 8 种基础的数据类型,分别为: Undefined 、 Null 、 Boolean 、 Number 、 String 、 Object 、 Symbol 、 BigInt 。
- Symbol 代表独一无二的值,最大的用法是用来定义对象的唯一属性名。
- BigInt 可以表示任意大小的整数。
防抖
原理:多次点击时会等待一次任务执行完成后重新执行新的任务
代码实现:
function debounce(){
let timer;
return function(){
if(timer) clearTimeout(timer)
timer=setTimeout(function(){
### //业务逻辑
},t) //t为传入参数
}
}
节流
原理:多次点击时会取消上一次的点击,重新执行这个任务
代码实现:
function throttle(){
let timer=null;
return function(){
if(!timer){
timer=setTimeout(function(){
### //业务逻辑
timer=null
},t)
}
}
}
解构赋值对象,是深拷贝还是浅拷贝
要求:使用...解构对象,判断深浅拷贝
结论:基本数据类型为深拷贝,嵌套数据类型为浅拷贝
const obj = {
prop1: "value1",
prop2: {
nestedProp: "nestedValue",
},
};
// 使用扩展运算符进行复制
const obj2 = { ...obj };
console.log("原始对象 obj:", obj);
console.log("复制后的对象 obj2:", obj2);
// 修改基本类型属性
obj2.prop1 = "newValue1";
console.log("修改基本类型属性后:");
console.log("原始对象 obj:", obj);
console.log("复制后的对象 obj2:", obj2);
// 修改嵌套对象的属性
obj2.prop2.nestedProp = "newNestedValue";
console.log("修改嵌套对象属性后:");
console.log("原始对象 obj:", obj);
console.log("复制后的对象 obj2:", obj2);
数组中改变自身和不改变自身的方法
改变自身:
- push:添加最后一个元素
- pop:删除最后一个元素
- shift:添加第一个元素
- unshift:删除第一个元素
- splice:通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。
- sort:排序
- reserve:反转
不改变自身:
- concat:返回一个新数组,这个新数组是由调用该方法的数组和其他数组或值连接而成。
- slice:返回一个新的数组,包含从原数组中提取的元素。可以指定起始位置和结束位置(不包括结束位置的元素)。
- indexOf:返回在数组中最后一次出现的指定元素的索引,如果不存在则返回 -1。
- includes:判断数组是否包含指定的元素,返回一个布尔值。
- join:将数组的所有元素连接成一个字符串,并返回这个字符串。可以指定连接元素的分隔符。