这个函数调用有什么区别?

时间:2012-07-16 17:25:38

标签: javascript

setInterval("RunSlide()", 5000);

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

setInterval("RunSlide", 5000);

其次,调用一个没有括号但仍然使用引号的函数。

setInterval(Runslide, 5000);

第三,调用没有括号和引号的函数。

RunSlide();

第四,用括号调用函数。

RunSlide;

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

1 个答案:

答案 0 :(得分:2)

即使结果可能相同,但使用不同的参数类型也存在差异。


  • setInterval ("argument as string", delay)

    这会导致与将字符串传递到eval相同的行为,因此推荐(出于同样的原因,可以找到关于该主题的更多内容on the web )。

示例摘录:

 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);

注(S)

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

alert;

在上面的示例之后,RunSlide();RunSlide;之间的差异应该非常明显,一个会调用名称​​ RunSlide 引用的函数,另一个不会(执行)什么都没有。)