每天10个js面试题(五)

1、forEach和map⽅法有什么区别?

  • 都是⽤来遍历数组的
  • forEach()⽅法会针对每⼀个元素执⾏提供的函数,对数据的操作会改变原数组,该⽅法没有返回值;
  • map()⽅法不会改变原数组的值,返回⼀个新数组,新数组中的值为原数组,调⽤函数处理之后的值;

2、虚拟dom?

  • ⽤ JavaScript 对象结构表示 DOM 树的结构;
  • 然后⽤这个树构建⼀个真正的 DOM 树,插到⽂档当中 当状态变更的时候,重新构造⼀棵新的对象树。
  • 然后⽤新的树和旧的树进⾏⽐较,记录两棵树差异 把所记录的差异应⽤到所构建的真正的 DOM 树上,视图就更新了。
  • Virtual DOM本质上就是在 JS 和 DOM 之间做了⼀个缓存

3、call、apply、bind区别?

  • 执行时机:call和apply会在调用时立即执行函数;bind返回的是一个改变了this指向的新函数,这个新函数只有在被调用时才会执行。
  • 参数传递方式:call方法接受一个参数列表,其中参数通过逗号分隔;
  • apply方法接受一个数组或类数组对象作为参数,这些参数会在函数调用时被展开;
  • bind方法也接受一个参数列表,并且可以多次传入参数。

4、requestAnimationFrame?

  • requestAnimationFrame() ⽅法告诉浏览器您希望执⾏动画并请求浏览器在下⼀次重绘之前调⽤指定的函数来更新动画。
  • 该⽅法使⽤⼀个回调函数作为参数,这个回调函数会在浏览器重绘之前调⽤。

5、js组成部分?

  • ECMAScript(语法部分):JavaScript 语言基础
  • DOM(文档对象模型):规定了访问 HTML 和 XML 的方法
  • BOM(浏览器对象模型):提供了浏览器窗口之间进行交互的对象和方法

6、js事件流模型?

  • 事件冒泡:事件逐级向上传播
  • 事件捕捉:事件逐级向下传播,一直到最具体的
  • DOM事件流:三个阶段:事件捕捉,目标阶段,事件冒泡

7、jsdom委托原理?

  • 事件委托原理: 事件冒泡机制(把子元素的事件行为 委托给 父级元素执行优点)
  • 优点:
    1. 可以大量节省内存占用,减少事件注册
    1. 可以实现当新增子对象时,无需再对其进行事件绑定
  • 缺点:
  • 如果把所有事件都用事件代理,可能会出现事件误判

8、js变量提升与块级作用域?

  • 变量提升:就是会把变量定义提升到当前作用域的最上面,只有var定义的变量存在变量提升
  • 块级作用域:
  • JS 中作用域有:全局作用域、函数作用域。没有块作用域的概念。
  • ES6中新增了块级作用域。块作用域由 { } 包括,if 语句和 for 语句里面的{ }也属于块作用域。在外边不能调用块作用域里边定义的变量

9、js prototype 和 proto 的关系是什么?

  • prototype: 所有函数都会有一个prototype属性, 它就是函数的原型对象
  • proto: 所有实例对象上都会有一个proto属性, 它等同于函数的原型对象

10、js原型链详细?

  • 所有的对象都拥有proto属性,它指向对象构造函数的 prototype 属性
  • 所有的函数都同时拥有proto和 prototype 属性
  • 函数的proto指向自己的函数实现 函数的 protytpe 是一个对象(原型)
  • 所以函数的 prototype 也有proto属性 指向 Object.prototype
  • Object.prototype.proto指向 null
相关推荐
秋意钟7 分钟前
Element UI日期选择器默认显示1970年解决方案
前端·javascript·vue.js·elementui
技术蔡蔡8 分钟前
Android字节码处理-函数耗时统计揭秘
算法·面试
蓝桉80226 分钟前
图片爬取案例
开发语言·数据库·python
逸狼32 分钟前
【JavaEE进阶】Spring DI
java·开发语言
我命由我1234544 分钟前
微信小程序 - 自定义实现分页功能
前端·微信小程序·小程序·前端框架·html·html5·js
my_styles1 小时前
2025-alibaba-Sentinel组件
java·开发语言·sentinel
禁默1 小时前
C++之旅-C++11的深度剖析(1)
开发语言·c++
程序员黄同学1 小时前
请谈谈 Vue 中的 key 属性的重要性,如何确保列表项的唯一标识?
前端·javascript·vue.js
繁依Fanyi2 小时前
巧妙实现右键菜单功能,提升用户操作体验
开发语言·前端·javascript·vue.js·uni-app·harmonyos
前端御书房2 小时前
前端防重复请求终极方案:从Loading地狱到精准拦截的架构升级
前端·javascript