在学习Vue时,我创建了两个更新组件数据的计时器。复制/粘贴时,我没有错误地更改setInterval()
中第二个函数的名称,但代码运行正常(Vue部分不相关,我保留它有一个功能示例但核心我的问题是关于代码底部的计时器):
var data_mynumber = {
time: 1
};
Vue.component('mynumber', {
template: '<div>time is {{time}}</div>',
data: function() {
return data_mynumber;
}
})
var data_smthg = {
time: 5
};
Vue.component('smthg', {
template: '<div>hello {{time}}</div>',
data: function() {
return data_smthg;
}
})
var vm = new Vue({
el: '#root'
})
setInterval(
function myTimer() {
var d = new Date();
data_mynumber.time = d.toLocaleTimeString();
},
1000
);
setInterval(
function myTimer() {
var d = new Date();
data_smthg.time = d;
},
100
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.5/vue.js"></script>
<div id="root">
<mynumber></mynumber>
<smthg></smthg>
</div>
两个setInterval()
都调用相同的函数名myTimer()
,每个函数都不同。代码按预期运行:计时器具有不同的速度。
这是偶然的,还是我可以在所有setInterval()
来电中重复使用相同的功能名称?
答案 0 :(得分:4)
函数名称具有不同的范围,因此不会发生冲突。
虽然 - 对于调试,使用不同的名称可能会有所帮助。
答案 1 :(得分:2)
事实上,您不需要该功能的名称。它被称为匿名函数或lambdas,并没有使名称有所区别。您将它作为参数传递,即回调。它不会调用函数的名称,它会调用引用。
如果你的代码是
setInterval(
function() {
var d = new Date();
data_mynumber.time = d.toLocaleTimeString();
},
1000
);