这是我参与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在同一个标签中同时使用。