理解setInterval(function(){...},时间)

时间:2013-12-11 03:43:55

标签: javascript

我完全理解,当你调用这样的匿名函数时:

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()?

3 个答案:

答案 0 :(得分:3)

没有。 x现在无论返回值来自您调用的函数。在您的情况下,您调用setInterval(),它返回间隔的ID,稍后可以使用clearInterval()清除。

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"

答案 1 :(得分:1)

  

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

在这种情况下,它是FunctionExpression,在评估时,返回一个函数对象。然后将函数对象传递给周围的代码。例如:

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

实际上与写作相同:

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

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

以下情况:

var x = bar(…);

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

答案 2 :(得分:0)

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