我写这个,但不行我可以将此函数传递给Javascript中的另一个函数吗?
可以javascript函数通自我其他功能
可我还访问在调用函数的变量?
function caller()
{
var variable=123;
calledfunction(this);
}
function calledfunction(caller)
{
console.log(caller.variable);
}
caller();
我写这个,但不行我可以将此函数传递给Javascript中的另一个函数吗?
可以javascript函数通自我其他功能
可我还访问在调用函数的变量?
function caller()
{
var variable=123;
calledfunction(this);
}
function calledfunction(caller)
{
console.log(caller.variable);
}
caller();
变化var variable
在分配this.variable
:
function caller()
{
this.variable=123;
calledfunction(this);
}
function calledfunction(caller)
{
console.log(caller.variable);
}
caller();
在这种情况下caller
是不是真的产生一个新的实例/范围,从而this
实际上是全球这是坏的。最好创建一个新的空对象,并用它来保存数据,而不是使用this
。
function caller()
{
var data = {};
data.variable=123;
calledfunction(data);
}
function calledfunction(values)
{
console.log(values.variable);
}
caller();
或者,你可以把calledfunction
内caller
在这种情况下使用闭包:
function caller()
{
var variable=123;
calledfunction();
function calledfunction()
{
console.log(variable);
}
}
caller();
你应该澄清,在第一种情况下,你真的只是玩全局变量,这是通常不鼓励('这个===窗口')。 – 2014-09-19 00:58:01
@FelixKling,好点。我添加了第三个例子,它创建一个空对象来保存数据,而不是使用'this'。 – 2014-09-19 01:16:51
错在这里有几个关键的事情。它也看起来像你试图实现回调,但实际上只需要一个简单的回报。 – Marty 2014-09-18 23:52:26
什么是“过滤器”,以及从哪里调用'calledfunction'? – 2014-09-19 02:12:26
刚刚修改代码 – 2014-09-19 10:22:43