25:什么是数组解构赋值?写出基础语法示例。对象解构赋值如何设置默认值?核心作用是什么?1:快速把数组里面的元素依次拿出来赋值给变量不用挨个下标去取。基础语法2:const user = { name: "小明" }; const { name, age = 20 } = user; console.log(age); // 203:简化代码:不用重复写 .属性 / 下标 获取数据
快速提取数组、对象里面的值
26:ES6 扩展运算符... 的作用是什么?如何用扩展运算符合并两个数组、复制一个对象?
把数组 / 对象里面的东西,"摊开、拿出来"合并数组const arr1 = 1,2; const arr2 = 3,4; const newArr = ...arr1, ...arr2; console.log(newArr); // 1,2,3,4复制数组const obj = { name:'张三', age:18 }; const newObj = { ...obj }; console.log(newObj);
27.箭头函数的简写规则有哪些?箭头函数和普通函数最大的两点核心区别是什么
简写规则
1.只有一个形参:小括号 () 可以省略
2:函数体只有一句 return 返回表达式:大括号{}和return可以一起省略3:无参数 或者 多个参数:小括号不能省
箭头函数 和普通函数最大两点核心区别箭头函数简写方便;无自身 this,无 arguments。
28:Symbol是什么类型?核心特性是什么?Symbol的主要应用场景有哪些?
1:Symbol 是 ES6 新增的原始(基本)数据类型,用来生成独一无二的值。
2:每调用一次 Symbol(),得到的值永远唯一,不能用 new Symbol(),它不是构造函数,不能参与隐式类型转换,不能直接转数字;可以转字符串,
3:对象私有属性(模拟私有),定义常量,防止对象属性名冲突29:Set的核心特点是什么?如何实现数组去重?Set常用的4个核心方法是什
么?各自作用?
1:成员唯一,不允许重复值,无序集合,没有下标索引,可迭代对象,可以用 for...of 遍历2:const arr = 1,2,2,3,3,3,NaN,NaN; // Set转数组 const newArr = ...new Set(arr) // 或者 Array.from(new Set(arr))console.log(newArr)// 1,2,3,NaN3:add(value) 作用:向集合添加一个元素,返回 Set 本身(支持链式调用)delete(value) 作用:删除指定元素,返回布尔值(true 删除成功,false 不存在)
has(value) 作用:判断集合是否存在该元素,返回布尔值
clear() 作用:清空集合所有成员,无返回值30:Map和普通对象的核心区别是什么?Map常用取值、存值方法是什么?如何
遍历 Map?
1:键 (key) 类型不同 对象:键只能是字符串 / Symbol,写数字会自动转字符串; Map:键可以是任意类型(数字、对象、数组、函数、NaN 等)。
2.键名是否重复 对象:同名键会覆盖; Map:键唯一,重复set会覆盖旧值。
3.顺序 对象:ES6 后属性有一定顺序,但不保证; Map:严格保留插入顺序。
4.获取长度 对象:需要Object.keys(obj).length; Map:直接用 map.size 属性。
5.可迭代性 对象不能直接 for...of; Map 本身是可迭代对象,可直接遍历。
6.原型 对象自带原型链,有默认属性;Map 无原型自带属性。
2:map.set(key, value):存值,添加 / 修改键值对,返回 Map 本身,支持链式
const m = new Map()
set('name','张三')
set(100, '分数'3:Map 的遍历方式(4 种常用)
for...of 直接遍历,拿到 key,valuemap.keys():遍历所有键map.values():遍历所有值map.entries():遍历键值对(和直接 for...of 等价)
31:简述find()和findindex()的作用与区别?includes()相比indexof的优势是什么
- find()
作用:查找数组第一个满足条件的元素,返回【元素本身】;找不到返回 undefined2. findIndex()
作用:查找数组第一个满足条件的元素,返回【下标索引】;找不到返回 -1 - includes () 对比 indexOf () 的优势
indexOf (值)
返回下标,找不到返回 -1;无法识别数组中的 NaN
includes (值)
返回布尔值 true/false;可以识别 NaN
32:.flat() 方法的作用是什么?默认参数和 Infinity 参数的区别?flatmap 的执行逻辑是什么?使用场景
一、Array.prototype.flat ()
扁平化数组,把多维数组降维,返回新数组,不修改原数组;会自动移除数组中的空项(empty slot)。2:默认:depth = 1,只展开第一层嵌套数组,更深的数组保留原样
Infinity:无限层级,无论嵌套多少层,全部摊平为一维数组3:arr.flatMap(callback) = 先 map,再自动 flat (1)4:一对多转换:一个元素映射成多个元素转换 + 过滤一体:返回空数组 \[\] 代表舍弃当前项替代 map().flat(1):只遍历一次数组,性能优于连续调用 map + flat
33:ES6如何给函数参数设置默认值?写出示例。函数默认参数的优先级和变量 提升规则是什么?
1:2:实参 > 默认参数 传了实参(且不是undefined),就用传入的值;不传 / 传undefined,才启用默认值。
参数的作用域:参数形成独立的作用域(参数作用域)重点:参数默认值,是在函数调用时才求值,不是函数定义时。
形参之间可以相互引用(前面的参数,后面可以直接用)
3:函数参数默认值开启了参数作用域 当函数设置了参数默认值时:
参数会形成一个独立的参数作用域,在函数体作用域外面;
函数体内部的 let / const 声明的变量,不会提升覆盖参数,同名会形成暂时性死区。
34:剩余参数.args的作用是什么?和 arguments的区别?剩余参数在参数
列表中的位置要求是什么?
1:作用收集函数剩余的实参,放到一个真实数组中。2:类型
...args:真实数组,直接使用数组 API
arguments:类数组对象,不是数组;要用 Array.from(arguments) 转数组
ES 版本
剩余参数:ES6 新增
arguments:ES5 就有,旧语法
箭头函数
剩余参数:✅ 箭头函数可以使用
arguments:❌ 箭头函数没有 arguments 对象,访问 arguments 会去外层作用域找
收集范围
...args:只收集剩余没被形参接收的参数,可控
arguments:收集全部实参
3:必须放在形参列表的最后一位,后面不能再有其他形参!
35:ES6模块化默认导出和分别导出的语法区别? import导入的三种常用方式 是什么?
1:2:方式 1:导入默认导出方式 2:导入命名导出(分别导出)
方式 3:命名空间导入(全部导入,打包成一个对象)
36:ES6 class 声明类的基础语法是什么?constructor 的作用?ES6如何实现 类的继承?super关键字的作用?
1: - constructor 的作用
constructor 是类的构造方法:
1.使用 new 创建实例时,自动调用 constructor
2.用来初始化实例属性,给 this 挂载属性
3.一个类只能有一个 constructor,多写会报错
4.如果不写,class 会自动添加一个空的 constructor(){}
3:4:子类 constructor 中 super()
调用父类的构造函数
子类构造函数里,必须在访问 this 之前调用 super (),否则报错
作用:把父类实例属性挂载到子类实例上
场景 2:子类方法中 super.方法名()
调用父类原型上的方法