Vue 经典面试题(15-21)

116 阅读2分钟

这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战

15.vue组件中data为什么必须是函数?

Object是引用数据类型,如果不用function返回,每个组件的data都是内存的同一个地址,一个数据改变了其他也改变了

javascipt只有函数构成作用域(注意理解作用域,只有函数的{}构成作用域,对象的{}以及if(){}都不构成作用域),data是一个函数时,每个组件实例都有自己的作用域,每个实例相互独立,不会相互影响

在创建或注册模板的时候传入一个data属性作为用来绑定的数据。但是在组件中,data必须是一个函数,因为每一个vue组件都是一个vue实例,通过new Vue()实例化,引用同一个对象,如果data直接是一个对象的话,那么一旦修改其中一个组件的数据,其他组件相同数据就会被改变,而data是函数的话,每个vue组件的data都因为函数有了自己的作用域,互不干扰

16. v-for与v-if的优先级?

v-for和v-if同时使用,有一个先后运行的优先级,v-for比v-if优先级更高,这就说明在v-for每次的循环赋值中每一次调用v-if的判断,所以不推荐v-if和v-for在同一个标签中同时使用。

17. vue中子组件调用父组件的方法?

image.png

18. vue中组件keep-alive的作用?

image.png

image.png

19.什么是vue生命周期和生命周期钩子函数?

image.png

20. vue如何监听键盘事件中的按键?

image.png

image.png

21. vue更新数组时触发视图更新的方法?

image.png

image.png