WEB前端面试题--js面试题(高级)相关总结题目

JavaScript 进阶面试题

  1. 说 说说 说 ECMAScript6 怎么写 class?
    这个语法糖可以让有 OOP 基础的人更快上手 js ,至少是一个官方的实现了。
    对熟悉 js 的人来说,这个东西没啥大影响;一个 Object.creat() 搞定继承,比 class 简洁
    清晰的多。
  2. 说 说 说 什么是面向对象编程及面向过程编程,它们的异同和优缺点?
    面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的
    时候一个一个依次调用就可以了。
    面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是
    为了描叙某个事物在整个解决问题的步骤中的行为。
    面向对象是以功能来划分问题,而不是步骤。
  3. 说 说 说 异步编程的实现方式?
    回调函数
    优点:简单、容易理解
    缺点:不利于维护,代码耦合高
    事件监听(采用时间驱动模式,取决于某个事件是否发生):
    优点:容易理解,可以绑定多个事件,每个事件可以指定多个回调函数
    缺点:事件驱动型,流程不够清晰
    发布/订阅(观察者模式)
    类似于事件监听,但是可以通过‘消息中心’,了解现在有多少发布者,多少订阅者
    Promise 对象
    优点:可以利用 then 方法,进行链式写法;可以书写错误时的回调函数
    缺点:编写和理解,相对比较难
    Generator 函数
    优点:函数体内外的数据交换、错误处理机制
    缺点:流程管理不方便
    async 函数
    优点:内置执行器、更好的语义、更广的适用性、返回的是 Promise、结构清晰
    缺点:错误处理机制
  4. 说 说 说 面向对象编程思想?
    基本思想是使用对象,类,继承,封装等基本概念来进行程序设计
    优点
    易维护
    易扩展
    开发工作的重用性、继承性高,降低重复工作量。
    缩短了开发周期
  5. 说 说说 说 Gulp 是什么 是什么?
    gulp 是前端开发过程中一种基于流的代码构建工具,是自动化项目的构建利器;它不仅能
    对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成
    Gulp 的核心概念:流
    流:就是建立在面向对象基础上的一种抽象的处理数据的工具。在流中,定义了
    一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的,而
    不用关心流的另一头数据的真正流向
    gulp 正是通过流和代码优于配置的策略来尽量简化任务编写的工作
  6. 想实现一个对页面某个节点的拖曳?如何做? 想实现一个对页面某个节点的拖曳?如何做?
    给需要拖拽的节点绑定 mousedown , mousemove , mouseup 事件
    mousedown 事件触发后,开始拖拽
    mousemove 时,需要通过 event.clientX 和 clientY 获取拖拽位置,并实时更新位置
    mouseup 时,拖拽结束
    需要注意浏览器边界的情况
  7. 封装一个函数,参数是定时器的时间,then 执行回调函数 执行回调函数? ?
    function sleep(time) {
    return new Promise((resolve) => setTimeout(resolve, time));
    }
  8. 怎么判 怎么判 断两个对象相等?

obj = {a: 1,b: 2}
obj2 = {a: 1,b: 2}
obj3 = {a: 1,b: ‘2’}
JSON.stringify(obj)==JSON.stringify(obj2);//true
JSON.stringify(obj)==JSON.stringify(obj3);//false

  1. Javascript 全局函数和全局变量 全局函数和全局变量? ?
    全局变量
    Infinity 变量代表正的无穷大的数值
    NaN 指示某个值是不是数字值
    undefined 指示未定义的值
    全局函数
    decodeURI() 解码某个编码的 URI 。
    decodeURIComponent() 解码一个编码的 URI 组件。
    encodeURI() 把字符串编码为 URI。
    encodeURIComponent() 把字符串编码为 URI 组件。
    escape() 对字符串进行编码。
    eval() 计算 JavaScript 字符串,并把它作为脚本代码来执行。
    isFinite() 检查某个值是否为有穷大的数。
    isNaN() 检查某个值是否是数字。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值