首页 > 试题广场 >

请选择下面代码输出1的次数 var vm = new Vue

[单选题]
请选择下面代码输出1的次数
var vm = new Vue({  
el: '#example',  
data: {    
message: 'Hello'  
},  
computed: {    
test: function () {      
console.log(1)      
return this.message    
}  
},  
created: function (){    
this.message = 'World'    
for (var i = 0; i < 5; i++) {        
console.log(this.test)    
}  
}
})
  • 1次
  • 2次
  • 5次
  • 6次
因为vue的computed具有缓存功能。message只更新了一次,所以test只触发一次,执行一次console.log(1)。
具体来说,computed内的test函数会被加入到message这个响应式数据的依赖视图中,当修改了message(触发了message的set)之后,test这个computed的dirty属性会被设置为true,当视图渲染的时候,发现dirty为true了,就会执行1次test函数以获取最新的值。
发表于 2021-07-08 15:48:06 回复(2)
test的计算结果会被缓存,如果没有依赖发生改变,直接拿缓存的数据而不是重新执行计算一遍。
发表于 2023-08-09 13:10:53 回复(0)