[英]javascript equivalent way of passing variable to anonymous function
在 php 中,我们可以这样做:
$foo = 1;
$bar = 2;
$fn = function() use ($foo, $bar) {
return $foo;
};
$foo = 3;
echo $fn(); // gives 1
如何在javascript中做到这一点?
我这样尝试,但失败了:
var foo = 1;
var bar = 2;
var fn = function() { return foo; }.bind(foo,bar);
foo = 3;
console.log(fn()); // gives 3, instead of 1
bind
是一种显式定义this
值和传递给函数初始参数的值的方法。
可以传递给函数的参数是在创建函数时定义的。
var fn = function(foo) { console.log(foo) }
JavaScript 没有任何功能可以修改函数在创建后接受的参数。
函数的作用域也是在创建时定义的,以后不能更改。 如果您不使用参数名称foo
,那么它将从定义它的范围中读取foo
。
var foo = 1; var fn = function(foo) { return foo; }.bind({}, foo); foo = 3; console.log(fn());
或通过上下文
var foo = 1; var fn = function() { return this.foo; }.bind({foo}); foo = 3; console.log(fn());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.