IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 前端一面面经总结 -> 正文阅读

[JavaScript知识库]前端一面面经总结

1. 对闭包的了解

答:闭包是函数对周围状态的引用,闭包需要函数来嵌套,在函数外,可以访问函数内的值,访问的值不会被垃圾回收机制所回收。当内部函数被保存到外部时,将会产生闭包。

  • 闭包的功能有:
    (1)在函数外,访问函数内的值
    (2)保持引用,不被垃圾回收
    (3)闭包可以做缓存
    (4)闭包可以实现共有变量
    (5)闭包可以实现封装,使属性私有化
    (6)闭包可以实现模块化开发,防止污染全局变量
  • 同样闭包也存在自己的缺点,闭包会导致原有的作用域链不释放,从而造成内存泄漏

2. 对原型、原型链的了解

答:原型是function对象的一个属性,它定义了构造函数制出的对象的公共祖先。通过构造函数产生的对象,可以继承该原型的属性和方法。原型也是对象。

  • 实例的__proto__ === 类的prototype(student.proto === Student.prototype)
  • 前者叫隐式原型, 后者叫显示原型

答:原型链就是实例对象原型对象的链接,每个函数都有一个prototype属性(即原型对象),我们把这个函数通过new构造函数创建出实例对象,这个实例对象会有一个自己的指针(proto)指向它的构造函数的原型对象。这样构造函数和实例对象之间就通过(proto)链接在一起,形成了原型链。

3. 对执行上下文的理解

答:执行上下文就是当前js被解析和执行时存在的环境。

  • 执行上下文又分为:
    (1)全局执行上下文:不在函数内部的代码都位于全局执行上下文中。
    (2)函数执行上下文:每个函数都有自己的执行上下文;每次函数被调用的时候,就会创建一个新的上下文;每个函数执行上下文被创建时,它都会按照特定的顺序执行一系列的步骤。
    (3)eval函数执行上下文:运行在eval函数中的代码具有自己的执行上下文。

  • 执行上下文的生命周期:

    (1)创建:当函数被调用,但未执行内部代码前,会做以下几件事:

    • 创建变量对象:首先会初始化函数的参数arguments,提升函数声明和变量声明;
    • 创建作用域链;
    • 确定this指向

    (2)执行:执行变量赋值,执行代码
    (3)回收:执行上下文出栈,虚拟机回收

4. 构造函数如何实现继承(call,apply的区别)

答:利用call,apply来改变this的指向,借用别人的方法来实现自己的功能,以此来实现继承。

  • call和apply的区别:
  • 共同点:作用都是改变this的指向
  • 不同点:call的第一位参数用于改变this指向,第二位实参及以后的参数都被当作正常的实参,传入形参。apply的第一位参数用于改变this指向,第二位是一个arguments数组,即传入一个实参数组。

5. 箭头函数能做构造函数吗

答:不能,因为箭头函数不绑定this。所以箭头函数不能使用arguments,super和new target。而这些值是由外部最近一层的而非箭头函数决定,这样的一个函数就没有构造方法。所以箭头函数不能被当做构造函数,也没有prototype这个属性。

6. 箭头函数的this指向哪里?

答:箭头函数不可以命名且是匿名的,箭头函数没有构造能力,没有arguments对象。设置箭头函数最主要是为了解决this指向问题,箭头函数this的指向是window。

  • 普通函数:function(){}
  • 箭头函数:()=> {}

7. 什么是跨域,如何实现跨域?

答:跨域问题,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。所谓同源,指的是协议,域名,端口号都相同。即浏览器执行js脚本时,会检查这个脚本属于哪个页面,如果不是同源页面,就不会被执行。

  • 举个跨域的例子
    (1) http://www.baidu.com/index.html
    调用 http://www.baidu.com/sever.php (非跨域)
    (2) http://www.baidu.com/index.html
    调用 https://www.baidu.com/sever.php (跨域,http,https协议不同)
    (3)http://www. baidu.com/index.html
    调用 http://www.taobao.com/sever.php (跨域,baidu,taobao域名不同)
    (4)http://www.abc.baidu.com/index.html
    调用 http://www.def.baidu.com/sever.php(跨域,abc,def子域名不同)
    (5)http://www.baidu.com:8080/index.html
    调用 http://www.baidu.com:8081/sever.php(跨域,8080,8081端口号不同)

  • 跨域的解决方法
    (1)JSONP:通过script标签属性scr属性来导入跨域的请求,在scr属性中填入跨域请求的url地址。但JSONP只支持GET请求,不支持POST请求。
    (2)代理:写一个接口,绕过浏览器端。
    (3)PHP端修改header。在php接口脚本中加入以下两句:

    header('Access-Control-Allow-Origin:*'); //允许所有来源访问
    header('Access-Control-Allow-Method:POST,GET') // 允许的访问方式
    

8. 防抖和节流的区别

  • 防抖:防止抖动。事件在我们规定的间隔n秒内多次执行,回调只会执行一次。简单来说,就是一个函数连续多次触发,只执行最后一次。
  • 节流:控制流量。用于用户在于界面交互时控制事件发生的频率。简单来说,就是一个函数连续多次触发,按照一定的间隔多次执行。
  • 防抖应用场景:
    (1)用户输入用户名,手机号时最后一个字母输入后再验证。
    (2)一个按钮发送请求时,最后一次按才发送。
    (3)窗口resize。当窗口大小确定时才渲染,防止重复渲染。
    (4)输入框内容联想。
  • 节流应用场景:
    (1)滚动加载
    (2)mousemove
    (3)mousehover

9. evenloop(事件循环)

答:事件循环是指浏览器解决js单线程运行时不会阻塞的一种机制,也就是我们经常使用的异步的原理。

  • 所有的同步任务都在主线程上执行,形成一个执行栈。
  • 主线程外,还存在一个“任务队列”,只要异步任务有了运行结果,就在“任务队列”中放置一个事件。
  • 一旦‘执行栈’中的所有同步任务都执行完毕,系统会读取“任务队列”,那些对应的异步任务就结束等待状态,进入栈,开始执行。
  • 主线程不断重复以上三步。
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-29 12:02:02  更:2022-04-29 12:02:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:16:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码