如何将Array对象传递给setInterval函数

cod*_*rex 4 javascript settimeout setinterval

我想在Javascript中将对象数组传递给setTimer函数.

setTimer("foo(object_array)",1000);
Run Code Online (Sandbox Code Playgroud)

我在这段代码上收到错误.

**注意:**抱歉!在我的问题中有一些更正:是否可以在setInterval()函数中使用.

CMS*_*CMS 17

setTimeoutsetInterval函数的第一个参数上使用匿名函数而不是字符串:

// assuming that object_array is available on this scope
setInterval(function () { foo(object_array); }, 1000);
Run Code Online (Sandbox Code Playgroud)

为什么会这样:

定义内部函数时,即使它们的父函数已经终止,它也可以引用其外部封闭函数中存在的变量.

此语言功能称为闭包.

如果传递一个字符串作为这些函数的第一个参数,则代码将通过调用eval函数在内部执行 ,并且这样做被视为一种好的做法.

Eval提供对JavaScript编译器的直接访问,并使用调用者的权限执行它传递的代码,也重复/广泛地使用eval (即你的setInterval函数是一个很好的例子)将导致性能问题.