面试题汇总

84 阅读3分钟

1️⃣ 监听事件的 target currenttarget 区别

  • event.target 属性引用的是事件最初发生时的那个元素,也就是触发事件的元素。如果事件是冒泡或捕获过程中从子元素传播到父元素的,event.target 总是指向事件的源头,即使事件处理函数是在父元素上定义的。

  • event.currentTarget 属性引用的是当前正在执行事件处理函数的那个元素。无论事件是如何传播的,它始终指的是事件处理函数所在元素,也就是事件处理程序被绑定的元素。在事件冒泡或捕获的过程中,即使事件是从子元素触发的,event.currentTarget 也保持不变,直到事件到达另一个有事件处理程序的元素。

2️⃣1 到 1w 的对称数

字符串转数组然后 reverse 比对

3️⃣ 左边固定右边自适应布局

flex

4️⃣ react render 函数(vue的)

1.jsx转换 babel 转换成函数调用 react.createlement;2.创建 虚拟 dom ;3.diff 算法;4.生成更新补丁;5.批量更新 合并更新操作 提高性能 6.事件绑定与生命周期 7.优化渲染 8.渲染完成

5️⃣requestidlecallback

requestIdleCallback 是一个浏览器提供的API,用于在浏览器的空闲时间执行回调函数,以优化性能和用户体验。它主要用于执行非紧急任务,比如后台数据处理、资源加载或动画帧之外的更新。这样,浏览器可以在处理用户交互和关键任务时避免执行这些非关键任务,从而保证流畅的页面响应。

requestIdleCallback 接受一个回调函数作为参数,这个函数会在浏览器的空闲时间被调用。回调函数会接收到一个 IdleDeadline 对象,其中包含 timeRemaining() 方法,返回剩余的可用毫秒数。如果任务在指定的时间内无法完成,可以再次调用 requestIdleCallback 来安排在下一个空闲周期继续执行。

React的渲染过程是基于虚拟DOM的,它通过批处理更新来提高性能。在React的合成事件系统中,事件处理器默认是同步的,这意味着它们会阻塞浏览器的主线程,直到事件处理完成。然而,如果在事件处理器中使用 requestIdleCallback,可以将耗时的任务放到浏览器的空闲时间去执行,从而避免阻塞用户界面。

6️⃣ js函数传参是值传参还是引用

值传递

  • 当传递基本类型(如 Number, String, Boolean, null, undefined, Symbol, 和 BigInt)的值时,实际上是拷贝了这些值的副本。函数内部对这些参数的修改不会影响到函数外部的原始值。

  • 对于引用类型(如 Object, Array, Function 等),传递的是对象引用的副本,而不是对象本身。这意味着,尽管函数内部不能改变引用(即不能使参数指向一个新的对象),但可以通过这个引用访问并修改对象的内容。因此,对于对象,函数内部的修改会影响到函数外部的同一个对象。

如果不想影响到外部对象  clone 该对象

7️⃣  js对象数组的排序

8️⃣ 跨域请求如何携带cookie?


前端请求时在request对象中配置"withCredentials": true;

服务端在response的header中配置"Access-Control-Allow-Origin", "http://xxx:${port}";

服务端在response的header中配置"Access-Control-Allow-Credentials", "true"