美文网首页
前端常见面试题(十)

前端常见面试题(十)

作者: 嘎拉呢 | 来源:发表于2019-07-25 05:32 被阅读0次

    目录:

    1,简述同步和异步的区别

    2, 数组去重(手写代码)

    3, 在JavaScript中什么是伪数组?如何将伪数组转化为标准数组

    4, SPA路由history模式,打包上线都遇到了哪些问题?你是如何解决的?

    5, JavaScript中callee和caller的作用

    简述同步和异步的区别

    众所周知,javascript是单线程的语言,所谓的单线程,就是从上至下,依次执行,当然这里的依次执行要抛开javascript的预解析机制。

    这样做的原因是因为javascript最初是为了操作DOM,运行在浏览器环境下的,而操作DOM的时候,不能是异步的,不然的话两个异步任务同时修改DOM结构的话,会导致浏览器不知道该执行哪一个。

    但是这样做也有缺点,当遇到一个响应时间特别长的任务时,容易导致页面加载错误或者浏览器未响应的情况。

    同步就是所有的任务都处在同一队列中,不可以插队,一个任务执行完接着开始执行下一个,相对于浏览器而言,同步的效率过低,一些耗费时间比较长的任务应该用异步来执行。

    异步就是将一个任务放入到异步队列中,当这个任务执行完成之后,再从异步队列中提取出来,插队到同步队列中,拿到异步任务的结果,可以提升代码执行的效率,不需要因为一个耗费时长的代码而一直等待。


    数组去重(手写代码)

    1,使用ES6的Set去重

    Set是ES6新增的数据类型,Set 的成员具有唯一性

    2,使用splice配合两重for循环去重

    3,使用for循环配合indexOf去重

    4,使用for循环配合sort排序去重

    5,使用for循环配合includes去重

    6.使用filter配合indexOf去重

    三:在JavaScript中什么是伪数组?如何将伪数组转化为标准数组

    javascript中的伪数组(类数组):不具有数组的push,pop等方法,但是具有length,以及可以利用for循环遍历等特性,例如函数的 arguments 参数集合,还有通过document.getElementsByTagName等方法获取的NodeList等都是类数组

    如何将伪数组转化为标准数组?

    四:SPA路由history模式,打包上线都遇到了哪些问题?你是如何解决?

    1,资源路径404问题

    2,页面刷新404问题

    五:JavaScript中callee和caller的作用

    1:callee是函数arguments对象内的指针,它指向当前的函数,使得在函数内部递归调用当前函数时,不需要调用函数名称,减少函数内部对于函数名的依赖

    2:caller是函数的一个属性,它指向调用当前函数的函数,如果当前函数在其他函数内被调用,则返回调用它的那个函数,如果是在全局环境下被调用,则返回 null

    我们可以利用caller的特性跟踪函数的调用链


    完结

    相关文章

      网友评论

          本文标题:前端常见面试题(十)

          本文链接:https://www.haomeiwen.com/subject/bxelrctx.html