Understanding setInterval(function() {...}, time)

Understanding setInterval(function() {...}, time)

本文关键字:time function Understanding setInterval      更新时间:2023-09-26

I完全理解当您调用这样的匿名函数时:

var assign_Function = function() { *code here...*; } 
// You can now use it like this:
assign_Function();

对于对象,

A={first_Property:12, second_Property:15}; // Object literal syntax
A.third_Property: function() { *code here...*; }   
A.third_Property(); // Call the method

但是,当function()被放入一个方法(或括号)中,然后被分配给一个变量时,会发生什么呢?像这样:

var x = setInterval(function() { *some code here*...; }, 1500);

x现在是x()吗?

否。x现在是您调用的函数的返回值。在您的情况下,您调用了setInterval(),它返回一个间隔的ID,稍后可以使用clearInterval()清除该ID。

var x = setInterval(function() { *some code here*...; }, 1500);
// Later in your code...
clearInterval(x); // Stops the interval from continuing to repeat

这与从不同的函数返回值没有什么不同

function returnSomething() {
    return 'test';
}
var y = returnSomething(); // y is now "test"

但是,当function()被放入一个方法(或括号)中,然后被分配给一个变量时,会发生什么呢?

在这种情况下,函数表达式在求值时返回一个函数对象。然后将函数对象传递给周围的代码。例如:

var fn = function(){/* body */};
bar(fn);

实际上与写作相同:

bar(function()/* body */});

唯一的区别是,在第一种情况下,引用存储在fn中的函数对象,但在第二种情况下不保留引用。在这两种情况下,bar都有效地传递了一个函数对象作为参数。

在以下情况下:

var x = bar(…);

则根据bar的返回值为x分配一个值,它不引用传递给bar的参数。

x是一个变量而不是函数,因为setInterval的返回类型不是函数而是Interval Id。