为什么vue中的data必须是函数

我们在写vue项目的时候,会发现data是一个函数,而不是对象。在面试时面试官也会经常问到这个问题。 原因: Object是引用数据类型,如果不用function 返回,每个组件的data 都是内存的同一个地址,一个数据改变了其他也改变了; javascipt只有函数构成作用域(注意理解作用域,只有函数的{}构成作用域,对象的{}以及 if(){}都不构成作用域),data是一个函数时,每个组件实例都有自己的作用域,每个实例相互独立,不会相互影响。

    推荐阅读