setInterval()是否需要不同的函数名?

时间:2016-11-10 17:27:28

标签: javascript

在学习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()来电中重复使用相同的功能名称?

2 个答案:

答案 0 :(得分:4)

函数名称具有不同的范围,因此不会发生冲突。

虽然 - 对于调试,使用不同的名称可能会有所帮助。

答案 1 :(得分:2)

事实上,您不需要该功能的名称。它被称为匿名函数或lambdas,并没有使名称有所区别。您将它作为参数传递,即回调。它不会调用函数的名称,它会调用引用。

如果你的代码是

setInterval(
  function() {
    var d = new Date();
    data_mynumber.time = d.toLocaleTimeString();
  },
  1000
);