面试题(2022)

1.vue双向数据绑定的原理?

vue的v-model实现数据与dom的双向绑定,vue2.0是 Object.defineProperty()方法实行发布订阅者模式实现数据的双向绑定,vue3.0实现是通过proxy代理实现双向绑定。vue的是基于创建用户UI界面的JavaScript渐进式框架,采用Mvvm模式,model层发生变化view层也会发生变化,view层发生变化model层也会变化。

2.vue的生命周期有哪些
beforeCreate(创建前)、created(创建后)、beforeMount(载入前)、mounted(载入后)、beforeUpdate(更新前)、updated(更新后)、beforeDestroy(销毁前)、destroyed(销毁后)

created可以操作没更新前的数据和dom'(可以用$nextTick进行更新后的dom操作)

mounted 真实dom挂载完成 (可以进行dom操作)

updated只要data数据被改变 就会自动更新触发(更新触发,第一次加载不触发)

destroy销毁全局计时器和自定义事件

如果使用了keep-alive会在多两个:activated、deactivated

当组件初次加载会执行前4个生命周期,分别为: beforeCreate、created、beforeMount、mounted

3.v-if 和v-show有什么区别?
相同点:都可以控制dom元素的显示和隐藏

不同点:v-show只是改变display属性,dom元素并未消失,切换时不需要重新渲染页面,渲染消耗大,场景应用频繁使用

v-if直接将dom元素从页面删除,再次切换需要重新渲染页面,内存消耗大,场景不频繁使用

4.async await 是哪些作用?
async await 是ES6的新增,async用于声明一个函数,await用于等待一个异步方法执行完成。async函数返回的是一个promise对象,可以用.then方法添加回调函数,在函数执行的中,一旦遇到await就回先返回,等到这个异步操作完成之后,它再进行函数体内后面的这个语句

5、数组常用的方法?哪些方法会改变原数组,哪些不会
会改变原数组:

pop (删除数组的最后一个元素并返回删除的元素)

push(向数组的末尾添加一个或更多元素,并返回新的长度)

shift(删除并返回数组的第一个元素)

unshift(向数组的开头添加一个或更多元素,并返回新的长度)

reverse(反转数组的元素顺序)

sort(对数组的元素进行排序)

splice(用于插入、删除或替换数组的元素) (index,howmany,arrary.item)

不会改变原数组:

concat---连接两个或更多的数组,并返回结果。

every---检测数组元素的每个元素是否都符合条件。

some---检测数组元素中是否有元素符合指定条件。

filter---检测数组元素,并返回符合条件所有元素的数组。

indexOf---搜索数组中的元素,并返回它所在的位置。

join---把数组的所有元素放入一个字符串。

toString---把数组转换为字符串,并返回结果。

lastIndexOf---返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。

map---通过指定函数处理数组的每个元素,并返回处理后的数组。

slice---选取数组的的一部分,并返回一个新数组。

valueOf---返回数组对象的原始值

不同遍历:(1)map()会分配内存空间存储新数组并返回,forEach()不会返回数据。

(2)forEach()允许callback更改原始数组的元素。map()返回新的数组。

for in  index遍历,  for of value遍历

6.什么是原型链?

函数对象显示式 prototype属性,还有隐式原型-proto-,都指向原型对象,原型对象可以继续找原型,形成原型链,顶层是,回去找他的construct可以找构造函数。

7.什么是闭包?闭包有哪些优缺点?
 概念:函数嵌套函数,内部变量能访问外部变量,这个变量称为自由变量
 解决的问题:保存变量
 带来的问题:会造成内存泄漏问题
 闭包的应用:防抖debonce节流throute
8.es6有哪些新特性?
模板字符串
箭头函数
for of  for in 
 Promise 对象纳入规范,提供了原生的 Promise 对象。
 let 和 const 命令,用来声明变量。
 解构赋值

async awiat
9.v-for 循环为什么一定要绑定key ?
给每个dom元素加上key作为唯一标识 ,diff算法可以正确的识别这个节点,使页面渲染更加迅速!

10.组件中的data为什么要定义成一个函数而不是一个对象?
每个组件都是 Vue 的实例。组件共享 data 属性,当 data 的值是同一个引用类型的值时,改变其中一个会影响其他

11.常见的盒子垂直居中的方法有哪些请举例3种?
利用子绝父相定位方式来实现

    <style>
        .container{
            width: 300px;
            height: 300px;
            position: relative;
        }
        .conter{
            width: 100px;
            height: 100px;
            position: absolute;
            top: 50%;
            left: 50%;
            margin-top: -50px;
            margin-left: -50px;
        }
    </style>

利用Css3的transfor

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值