此函数调用之间有什么区别

What is the difference between this function call?

本文关键字:什么 区别 之间 函数调用      更新时间:2023-10-22
setInterval("RunSlide()", 5000);

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

setInterval("RunSlide", 5000);

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

setInterval(Runslide, 5000);

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

RunSlide();

第四,调用带括号的函数。

RunSlide;

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

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

<小时 />
  • setInterval ("argument as string", delay)

    这将导致与将字符串传递给eval相同的行为,因此建议这样做(出于相同的确切原因,可以在 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);
<小时 />

注释

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

alert;

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