• 备战面试每日一题


    1.如何理解this?

    this表示的是函数运行时自动生成的一个内部对象,只能在函数内部使用,总是指向调用它的对象。

    this是在运行时进行绑定的,并不是在编写的时候绑定,它的上下文取决于函数调用时的各种条件。this的绑定和函数声明的位置没有任何关系,只取决于函数的调用方式。

    2.浏览器的多进程和javaScript的单线程

    一个进程是由一个或者多个线程组成的,线程是一个进程中代码的不同执行路线。一个进程的内存空间是共享的,所有的线程都能够访问这些内存。打开一个tab页,其实就是创建了一个进程,一个进程可以有多个线程,比如JS引擎线程、GUI渲染线程、HTTP请求线程、定时器触发线程、事件触发线程等。当发起一个请求的时候,其实就是创建了一个线程。当请求结束时,线程可能就会销毁。

    JavaScript的单进程与它的用途有关,作为浏览器的脚本语言,javaScript主要是和用户互动,以及操作DOM。如果有两个线程同时操作DOM的话。会带来很复杂的同步问题。

    3.事件循环

    事件循环的异步队列有两种:一种是宏任务,一种是微任务。宏任务队列可以有多个,微任务队列只有一个。

    所有的同步任务都在主线程上执行,形成“执行栈”。首先主线程会去执行所有的同步任务,等所有的同步任务执行完,会查看任务队列里面的异步任务。如果满足条件,那么就重新进入主线程开始执行,这时它就变成了同步任务。等它执行完后,下一个异步任务会进入到主线程开始执行。直到所有的任务执行结束。

    第一次事件循环中,js引擎会把整个script代码当成一个宏任务执行。执行完成之后,会查看任务中是否存在微任务,如果有微任务,那么会依次从微任务的队列中将读取执行完所有的微任务。执行完微任务之后,js引擎会继续查看宏任务队列中的任务,依次执行。再执行微任务队列。如此循环。

    4.hash路由和history路由

    hash(#)是URL的锚点,代表网页中的一个位置,单是改变hash(#)后面的部分,只会滚动到网页响应的位置,并不会重新刷新页面。也就是说hash出现在URL中,但不会被包含在http请求中。因此改变hash不会重新加载页面。同时每一次更改#后面的部分就会在浏览器的历史记录中添加一条数据,使用浏览器的后退按钮就能返回到上一个位置。hash模式通过锚点值的改变,根据不同的值,渲染指定DOM位置的不同数据。

    监听hash的改变通过==》hashchange()

    histoy模式利用了h5中history interface新增的pushState()和replaceState(),提供了对浏览器记录栈修改的功能,当它们执行修改时,虽然会改变URL,但是不会立即向后端发送请求。这种情况需要后台配置支持。我们的页面时SPA,如果后台没有相应的配置,用户直接访问其中一个页面的时候就会404。在服务端增加一个覆盖所有资源的默认情况。URL如果匹配不到相应的资源,那么返回一个index.html页面。这个页面就是app依赖的页面。

    5.深拷贝和浅拷贝的区别?

    浅拷贝是拷贝一层。属性为对象时,那么浅拷贝是复制,两个对象会指向同一个地址。

    深拷贝是递归拷贝深层次,属性为对象时,深拷贝是新开栈,两个对象指向的是不同地址。

    如何实现浅拷贝

    (1)Object.assign

    (2)ES6的扩展运算符

    (3)slice()

    (4)concat()

    如何实现深拷贝

    (1)通过递归的方式实现

    6.如何将类数组转换成数组?

    Array.from()

    Array.apply(null, array)

    Array.prototype.concat.apply([], array)

    7.如何剪裁图片(选择头像)

    https://q.shanyue.tech/fe/js/231.html

    8.bind 与 call/apply 的区别是什么

    他们都是绑定 this 的,但是bind 返回函数,call/apply 直接执行函数

  • 相关阅读:
    C++入门学习笔记
    springboot整合xxl-job分布式定时任务【图文完整版】
    Spring Boot快速入门
    Scala第三章节
    通用栈实现
    Redis03:Redis基础知识以及数据类型
    android红外信号
    Postfix别名邮件与SASL验证
    跳台阶算法
    我今年50岁了,还在干前端
  • 原文地址:https://blog.csdn.net/qq_41328247/article/details/132690580