【发布时间】:2013-07-08 02:27:32
【问题描述】:
在不将其绑定到窗口对象的情况下,实现这样的事情的正确方法是什么?
x = function(fn)
{
foo = 'bar';
fn();
}
x(function()
{
console.log(foo) // error happens here
});
在 PHP 中,您可以通过“使用”指令进行操作。
$foo = 'bar';
$fn = function() use($foo)
{
echo $foo; // bar
}
编辑:我稍微更改了这段代码。我想要实现的是,使声明的变量在闭包中可用,而无需将其传递到那里。
foo = 'bar';
console.log(foo) // bar
console.log(window.foo) // bar
console.log(this.foo) // bar
我想实现同样的效果,另外一个对象被绑定为“this”。
【问题讨论】:
-
我没有得到你想要的。我只希望答案不是
with。 -
那不应该说
undefined。在这里工作正常jsbin.com/evacak/1/edit -
这行得通...我在控制台中得到 'bar' 和 'foo'
-
您的新代码仍然有效(即使添加
var会更简洁)... -
一旦你发现真正困扰你的事情,你可能应该关闭这个烂摊子并提出一个新问题。
标签: php javascript closures