3
setInterval("RunSlide()", 5000);

首先,调用带括号和引号的函数。

setInterval("RunSlide", 5000);

其次,调用不带括号但仍使用引号的函数。

setInterval(Runslide, 5000);

第三,调用不带括号和引号的函数。

RunSlide();

第四,用括号调用函数。

RunSlide;

第五,调用不带括号的函数。

4

1 回答 1

2

即使结果可能相同,使用不同的参数类型也会有所不同。


  • setInterval ("argument as string", delay)

    这将导致与将字符串传递给相同的行为,eval因此建议这样做(出于相同的确切原因,可以在网络上找到有关该主题的更多信息)。

示例片段:

 setInterval ("console.log ('hello world');", 100);

  • setInterval (func_reference, delay, param1, param2, ...)

    这将导致 所指向的函数func被调用,这是推荐的选项。如果您以这种方式调用函数,您还可以将参数传递给要执行的函数。

示例片段:

function say_it (word1, word2) {
  console.log (word1 + " " + word2);
}

setInterval (say_it, 100, "hello", "world");

setInterval (function (word1, word2) {
   console.log (word1 + " " + word2);
}, 100, "hello", "world);

笔记)

setInterval使用第一个参数作为包含函数名称的字符串进行调用是完全没有意义的,该函数将不会被执行。这与在代码中的某处编写以下内容相同。

alert;

RunSlide();和之间的区别在RunSlide;上面的例子之后应该很明显,一个会调用名称RunSlide引用的函数,另一个不会(根本不做任何事情)。

于 2012-07-16T17:37:03.930 回答