1

当我想传递值时,它没有用。这是我的代码,

function showimage(b)
{
    //if alert was here, it would show the value of b
    $("#lightboxholder").show("fast","",function (b)
    {
        alert(b);//but now when the alert is here, it is not showing the value of b
    });
}

我错过了什么吗?提前致谢!

4

4 回答 4

2

内部函数将使用新参数调用,因此b将替换为新变量。

如果你function (b)function ()- 替换,那么内部b应该是给外部函数的那个​​。

于 2012-10-23T16:45:59.070 回答
1

那是因为函数中的局部值b覆盖了bshowImage 函数中的值。

于 2012-10-23T16:44:07.930 回答
0

尝试这个,

现场演示

function showimage(b)
{
    //if alert was here, it would show the value of b
    $("#lightboxholder").show("fast", function ()
    {
        alert(b);//but now when the alert is here, it is not showing the value of b
    });
}
于 2012-10-23T16:44:39.353 回答
0

让我们从简单的开始,给你做你想做的代码:

function showimage(b)
{
    //if alert was here, it would show the value of b
    $("#lightboxholder").show("fast","",function ()
    {
        alert(b); // interestingly enough, it knows what b is here
    });
}

从那里出现了两个主要问题:为什么你正在尝试的东西不起作用,为什么我正在做的东西起作用。让我们从你正在做的事情开始。

您正在尝试将参数传递给函数,就好像您正在调用匿名函数一样。但是,您没有调用该函数。您正在定义函数并将函数本身作为参数提供给 jQuery。jQuery 然后在它希望的位置调用你定义的函数。因为它需要在那个时候提供价值而不是,所以你不会得到你想要达到的结果。因此,您不能以您尝试的方式传递参数。

然后让我们继续讨论为什么我的版本可以工作。这就是javascript中所谓的封装。基本上,如果您定义一个函数,您可以使用在定义该函数的上下文中可用的任何变量。然后,Javascript 会自动确保只有您使用的那些包含在您定义的函数的上下文中。这完全独立于您调用函数的位置,仅依赖于您定义函数的位置。因此,我只是从 showImage 函数中“借用” b 值并在匿名函数中使用。

于 2012-10-23T16:51:43.420 回答