16.你对面向对象编程的理解,面向过程和面向对象有什么区别?
对面向对象的理解:以对象为核心,靠封装、继承、多态组织代码,绑定数据与操作,强调对象交互和代码复用。
与面向过程的区别:面向对象以类/对象为模块,数据+处理绑定,独立性高;面向过程以函数为模块数据与处理分离。
17. ?.,||,&&,**是什么?
?.是可选链操作符,用于安全访问深层对象属性,遇到null/undefined 时短路返回 undefined;
||(逻辑或运算符)如果左操作数为 false 或 undefined,则将右操作数赋值给左操作数。
&&(逻辑与运算符)如果左操作数为 true,则将右操作数赋值给左操作数。
** 是指数运算符,用于计算数值的乘方幂运算。
18. async 和 await的作用是什么
async和 await 结合后能让异步代码呈现同步代码的直观结构,大幅简化异步函数写法。
async函数返回值为 promise 对象,promise 对象的结果由 async 函数执行的返回值决定
await必须写在 async 函数中,右侧的表达式一般为 promise 对象,返回的是 promise 成功的值,await 的 promise 失败了, 就会抛出异常, 需要通过 try…catch 捕获处理;
19.对象方法?
Object.values():返回一个给定对象的所有可枚举属性值的数组;
Object.entries():能将对象转换为一个包含键值对的数组,方便对对象进行遍历或转换操作;
trimStart()消除前面的空格
trimEnd();消除后面的空格
flat()将数组扁平化,降维
flatMap()先对数组执行 map() 映射,再对结果执行 flat()
20. export 和 import分别有几种写法
export(导出)有三种写法:
默认导出
let school = ‘大喇叭’;
export default shool;
export default是 ES6 模块默认导出的语法
分别导出
export function teach() {
console.log(“我们可以教你开发技术!”);
};
混合导出
export {
school,
teach
}
import(导入)对应有三种写法:
默认导入
import school from ‘./school.js’;
console.log(school);// 大喇叭
分别导入
import {school, teach} from ‘./school.js’;
console.log(school);// 大喇叭
混合导入
import * as school from ‘./school.js’;
console.log(school.school);// 大喇叭
21.如何检测一个数组是否包含某个值?
includes()有则返回true,无则返回false。
findIndex()是用于查找数组中第一个满足条件的元素的索引的方法,返回该元素的索引值;若未找到,则返回 -1。
find()查找数组中第一个满足指定条件的元素的方法,找到的返回元素本身;若未找到则返回 undefined。
22. 给函数参数设置默认值有几种方法、最少3种
直接设置默认值:直接在参数声明时指定默认值。
结合解构赋值:结合对象解构为参数设置默认值,适合多参数场景。
使用函数表达式:默认值设置为一个函数调用,每次调用原函数时动态生成默认值。
23.箭头函数语法?简写规则
提供了一种更加简洁的函数书写方式,使用箭头(=>)定义函数,多用于匿名函数的定义;
简写规则:若只有一个参数,可省略参数外的括号;若函数体只有一条返回表达式的语句,可省略大括号和 return 关键字;若返回对象字面量,需用括号包裹对象(避免与函数体大括号混淆)。
24.如何对比两个对象是否相等?如何合并两个对象?
比较:Object.is()可以进行比较,即判断两个对象的值是否完全相同。
合并:Object.assign()方法、使用扩展运算符。
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:对象私有属性(模拟私有),定义常量,防止对象属性名冲突
es6基础知识