当前位置: 首页 > article >正文

每天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. 可以大量节省内存占用,减少事件注册
  • 2. 可以实现当新增子对象时,无需再对其进行事件绑定
  •     缺点:
  • 如果把所有事件都用事件代理,可能会出现事件误判

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

http://www.kler.cn/news/351038.html

相关文章:

  • 产品如何实现3D展示?具体步骤如下
  • 使用flask构建一个简单的文件同步系统
  • Hallo2 长视频和高分辨率的音频驱动的肖像图像动画 (数字人技术)
  • vue2 使用环境变量
  • Visual Studio Code
  • 嵌套div导致子区域margin失效问题解决
  • 基于cloudreve(Docker应用)搭建网盘服务,用于目录的分享和在线预览。
  • 川字结构布局/国字结构布局
  • 双通道音频功率放大电路D2822M兼容TDA2822,全封装输出功率0.11W,用于音频产品
  • 录自己一段音频,后续根据文字生成自己音色的音频(java实现)
  • 二叉树基本运算算法实现
  • Lua 函数
  • 【ComfyUI】轻松一键视频转动漫!太棒了!超强稳定视频转绘工作流,如此丝滑~!
  • JSON字符串转成java的Map对象
  • RabbitMQ原理剖析
  • Go4 和对 Go 的贡献
  • Excelize 开源基础库 2.9.0 版本正式发布
  • 基于php的旅游管理系统
  • Hadoop等大数据处理框架的Java API
  • Ansible自动化运维实践:从入门到进阶
  • Java 枚举类
  • 【深度学习】阿里云GPU服务器免费试用3月
  • 【Python】 list dict数据合并汇总demo
  • LinkedList和链表(上)
  • no WeWorkFinanceSdk in java.library.path
  • 嵌入式数据结构中树与查找方法实现