javascript - 为什么setInterval(tom(),2000);会立即执行且只执行一次?

查看:123
本文介绍了javascript - 为什么setInterval(tom(),2000);会立即执行且只执行一次?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

var tom = function tom()[alert('x');};
setInterval(tom(),2000);
//立即执行,执行一次后不再执行

var tom = function tom()[alert('x');};
setInterval(tom,2000);
//很多秒之后执行,之后2秒一次

请问在setInterval中,tom与tom()为什么会有这种区别?
为什么setInterval(tom(),2000);会立即执行且只执行一次?

解决方案

var tom = function tom(){alert('x');};
setInterval(tom(),2000);

当问立即执行,执行一次后不再执行时,我猜你指的是alert被立即执行了,并且此后没再执行。下面我们来看看文档中是怎么介绍setInterval方法的:

注意func的要求是一个函数,然后这个函数将会被不断的重复调用。

你再看看你传的是什么?是tom(),这是what?这是一个函数调用,函数调用就会有返回值,所以你的setInterval(tom(),2000);的实际效果是:

var tom = function tom(){alert('x');};
var res = tom();//res其实是undefined,因为你的tom()并没有指定返回值
setInterval(res, 2000);

所以,每隔2秒都执行一次undefined,你还期望什么呢?

这篇关于javascript - 为什么setInterval(tom(),2000);会立即执行且只执行一次?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆