每天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
相关推荐
傻乐u兔5 分钟前
C语言进阶————指针4
c语言·开发语言
大模型玩家七七8 分钟前
基于语义切分 vs 基于结构切分的实际差异
java·开发语言·数据库·安全·batch
历程里程碑8 分钟前
Linux22 文件系统
linux·运维·c语言·开发语言·数据结构·c++·算法
恋猫de小郭10 分钟前
Flutter Zero 是什么?它的出现有什么意义?为什么你需要了解下?
android·前端·flutter
牛奔1 小时前
Go 如何避免频繁抢占?
开发语言·后端·golang
寻星探路5 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
崔庆才丨静觅7 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
lly2024067 小时前
Bootstrap 警告框
开发语言
2601_949146537 小时前
C语言语音通知接口接入教程:如何使用C语言直接调用语音预警API
c语言·开发语言