【问题标题】:Javascript - Pass a function with arguments as an argumentJavascript - 传递带有参数的函数作为参数
【发布时间】:2011-09-15 03:23:52
【问题描述】:

我正在清理一些脚本错误并且遇到了一个微妙的困境。

考虑这行代码:

Session.Timer = window.setTimeout("TimeoutHandler(Session)", 1000);

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

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

【问题讨论】:

    标签: javascript callback parameter-passing


    【解决方案1】:

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

    Session.Timer = window.setTimeout(function() { TimeoutHandler(Session); }, 1000);
    

    如果您不熟悉闭包,这里是brief introduction

    【讨论】:

    • +1,但 closure 匿名函数 听起来它们是同一个东西。
    • @alex 找不到我喜欢的措辞,但出于基本目的,匿名函数和闭包密切相关。
    • 当我快速阅读这篇文章时非常明显:) 我不知道他们甚至保留了局部变量的范围。我学到了新东西!我什至可以实现我从一开始就想到的第一个解决方案:D
    猜你喜欢
    • 2010-11-20
    • 1970-01-01
    • 2013-11-06
    • 2019-11-21
    • 1970-01-01
    • 2012-10-28
    相关资源
    最近更新 更多