Javascript - 传递一个带参数的函数作为参数

Max*_*and 1 javascript callback parameter-passing

我正在清理一些脚本错误,并且有一个微妙的困境.

考虑以下代码行:

Session.Timer = window.setTimeout("TimeoutHandler(Session)", 1000);
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为当Timeout尝试执行时TimeoutHandler(Session),它将不知道Session变量是什么(超出范围).

有没有办法将Session"值"转换为字符串数字,以便正确执行?

cob*_*bal 6

使用闭包(使用匿名函数)而不是字符串,它将为您保留对Session的引用.

Session.Timer = window.setTimeout(function() { TimeoutHandler(Session); }, 1000);
Run Code Online (Sandbox Code Playgroud)

如果你不熟悉闭包,这里有一个简短的介绍.