面试题

1.let const var 的区别

1.let const 有块级作用域,var不存在块级作用域

2.var可以重复声明同名变量,后面的会覆盖前面的,而let const 不能重复声明同名变量

3.let const在未声明变量之前不可使用,存在暂时性死区,var则存在变量提示,声明的变量会提升到当前作用

  域的顶部

4.let var 可以先声明不赋值,也可以赋值后修改,const必须声明时设置初始值,且不能修改

2.localStorage,sessionStorage,cookie 的区别

1.大小不同 localStorage 和sessionStorage 大小为5mb或更大 cookie大小不能超过4kb

2.cookie会在浏览器和服务器之间来回传递,localStorage和sessionStorage不会把数据发送给

   服务器,仅在本地保存
  1. 有效期不同,localStorage只要不删除,永久有效,sessionStorage在浏览器窗口关闭之前有效,cookie在设置的过期时间之前有效,即使浏览器关闭

  2. 作用域不同,localStorage和cookie在所有的同源窗口中共享 ,sessionStorage不在不同的浏览器窗口共享,即使是同一个页面

    localStorage 一般用于用户数据缓存 sessionStorage 一般用于敏感账户,比如银行账号登录

    cookie一般用于判断用户是否登录,每次发送请求都会携带

3.基本数据类型和引用数据类型,怎么判断 ,null和undefined的区别

基本数据类型:number   string    boolean    undefined    null     typeof判断    null为object    判断值为类型

复杂数据类型:function     object     array    instanceof判断   判断值为true和false    通过Array.isArray来区别

对象和数组

es7新增可以同时判断基本数据类型和引用数据类型的方法

object.property.toString.call

null 为 声明并赋值了 值为空对象

undefined 为声明了未赋值

null== undefined 但是不全等于

4.作用域和作用域链

作用域: 变量或者函数所能作用的范围

作用域链:当我们使用一个变量时,会在当前作用域的变量对象中查找,如果没有找到,就会从父级的作用域 

变量对象中查找,一直到全局作用域的变量对象中,这样由多个作用域的变量对象构成的链就是作用域链

5.重绘与回流

页面加载时,浏览器会将html标签还有js动态创建的元素解析成一个dom树,

dom 树 加上 css样式结合形成render 树

重绘: 当 渲染树中一些元素需要更新属性,这些属性只影响外观状态,而不影响布局的,就称之为重绘

回流:渲染树中因为元素的尺寸,布局或者隐藏发生改变需要重新构建时,就称之为回流,每个页面最少有一次回流,在页面第一次加载时,因为要构建渲染树,在回流时,浏览器会使渲染树中受到的影响的部分失效,并重新构建这部分渲染树,完成回流后,浏览器会重新绘制这部分到页面中,也就是重绘。

重绘不一定会引起回流,回流一定会引起重绘

6.es6新增语法,并说明使用场景

  1. let const
  2. 箭头函数
  3. 解构
  4. 模板字符串
  5. 拓展运算符
  6. promise async await
  7. for of
  8. set map
  9. class

7.什么是闭包

闭包本质上是将函数内部和函数外包连接,使函数外部可以使用函数内部的变量

能够读取其他函数内部变量的函数就是闭包

闭包会使得函数中的变量始终都保存在内存中,使用多的话会影响网页性能,也有可能导致内存泄漏,一般都是

在函数退出之前,将不使用的局部变量全部删除

8.深拷贝和浅拷贝

  1. 浅拷贝就是只复制引用地址,而不复制真正的值,深拷贝是对目标的完全复制,连值一起复制了

  2. 浅拷贝一般用拓展运算符,深拷贝使用json中的parse和stringify 或者使用递归 递归就是自己引用自己,有结束的条件

9.this指向

  1. 普通函数中,this指向window 严格模式下,this指向undefined

  2. 构造函数中,this指向创建的对象

  3. 方法声明中,this指向调用者

  4. 定时器中,this指向window

  5. 事件中,this指向事件源

10.数组方法及数组去重

  1. map 遍历数组并将新的数据返回一个新数组
  2. filter 过滤 遍历数组 返回符合条件的所有数据
  3. every 遍历数组 检测每一个元素是否都符合条件 是返回true 否返回false
  4. some 遍历数组 检测数组中是否有元素符合条件,只要有一个符合就不在遍历,返回true,否则返回false
  5. forEach 遍历数组,可以对每一个元素进行操作
  6. for of 遍历输出每一个元素的值
  7. find 遍历数组 找到数组中符合条件的元素,找到返回元素本身,找不到返回undefined
  8. findindex 遍历数组 找到数组中符合条件的元素的下标,找到返回下标,找不到返回 -1
  9. 数组去重 es6 set去重 es5 for嵌套for

11.for in 和for of 的区别

for  in 遍历的是对象的key值  或者数组的下标 

for  of  遍历的是对象的value 值,或者数组的元素

12.call apply bind 的区别

  1. js 防抖和节流 使用场景

    防抖是设置一个时间,在触发事件n秒后再执行这个函数的回调,如果在这个时间段内再次触发,就会重新计时,类似于回城

    节流是在一个时间段内只能触发一次函数,多次触发,只执行一次 类似于大招

  1. 原型和原型链

    每个引用数据类型都有一个proto属性,每一个函数都有一个prototype属性,所有引用类型的proto属性指向它的构造函数的prototype属性,这是是原型

    当访问一个对象的属性时,会从这个对象的本身属性去查找,如果没有找到,就会去它的proto属性上查找,也就是它的构造函数的prototype属性上查找,如果还没找到 ,就会继续去查找prototype属性,这样一层一层的往上找,形成的一个链式结构,就是原型链

  1. 同步和异步

    同步和异步一般是指方法的调用

    同步是指一旦开始调用之后,就必须等方法调用返回之后,才能执行下面的代码

    异步是指一旦开始调用,方法会立即返回,可以执行后面的代码

    常用的异步有定时器和调用接口

  1. 跨域及解决方法

    jsonp

    cors

    跨域代理

  1. node和webpack了解

    node是基于v8引擎的js运行环境

    webpack是一个前端构建工具,打包

  1. promise

    异步编程的一种解决方案,解决回调地域问题

    三种状态

  1. mvvm

    m是数据模型 v是视图

    vm是核心 视图模型

    mvvm模式就是将前端的视图和后端的数据进行双向绑定,当一方改变另一方随之而改变

  1. Object.defineProperty 和 Proxy 的区别
  1. vue2生命周期及其使用场景
  1. vue组件传值

    父传子 props

    子传父 $emit

    兄弟传值 eventBus

    跨层级 传值 provide inject

    常用vuex

  1. v-if和v-show的区别

    v-if是根据判断条件来动态的创建销毁元素

    v-show是根据判断条件动态显示隐藏元素

    如果判断为false时,v-if不会创建,而v-show无论为什么,都会渲染

    频繁切换使用v-show

  1. v-if为什么不能和v-for一起使用

    在vue2中v-for优先级高于v-if 所有需要先循环再判断,会消耗许多性能

    先判断再渲染

  1. vue的key值作用

    v-for的 key值主要作用是提升性能,当我们对数据进行修改时,重新全部渲染会很耗费性能,而key值的出现就避免了这个问题,v-for采用了就地更新的策略,当数据修改时,它会根据key值判断某一个值是否发生改变,如果改变就重新渲染这个值,如果没有,就可以复用之前的值,v-for中key一般为id

  2. vuex

  1. 路由的跳转和传参方式

  2. router 和toute的区别

  3. 怎么监听路由信息

  4. nexttick

  5. pinia 和 vuex

  6. vite和webpack

  7. vue3和vue2的区别

  8. ts语法规范

  9. 小程序 uniapp 生命周期

  10. 小程序登录流程

  11. 小程序跳转方式

  12. 小程序支付流程

  13. 封装的方法

  14. 开发流程和人员结构

  15. js事件循环机制

  16. js继承

  17. 动态组件,动态路由,权限管理

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.说说你对盒子模型的理解 当对一个文档进行布局(layout)的时候,浏览器的渲染引擎会根据标准之一的 CSS ...
    Ysrenacer1_bcfd阅读 2,169评论 0 19
  • 一、CSS问题 1.flex布局 display:flex; 在父元素设置,子元素受弹性盒影响,默认排成一行,如果...
    陈二狗想吃肉阅读 617评论 0 9
  • css相关 1. 万能居中 1.margin: 0 auto;水平2.text-align: center;水平3...
    宁_Yi阅读 3,371评论 2 39
  • 1、JS的数据类型只有浮点型,没有整型。null,underfined,boolean,number,string...
    6e5e50574d74阅读 2,242评论 2 1
  • css相关 1. 万能居中 1.margin: 0 auto;水平 2.text-align: center;水平...
    chaocc阅读 989评论 0 2