2014-09-18 88 views
1

我写这个,但不行我可以将此函数传递给Javascript中的另一个函数吗?

可以javascript函数通自我其他功能

可我还访问在调用函数的变量?

function caller() 
{ 
    var variable=123; 
    calledfunction(this); 
} 
function calledfunction(caller) 
{ 
    console.log(caller.variable); 
} 
caller(); 
+1

错在这里有几个关键的事情。它也看起来像你试图实现回调,但实际上只需要一个简单的回报。 – Marty 2014-09-18 23:52:26

+0

什么是“过滤器”,以及从哪里调用'calledfunction'? – 2014-09-19 02:12:26

+0

刚刚修改代码 – 2014-09-19 10:22:43

回答

0

变化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(); 

或者,你可以把calledfunctioncaller在这种情况下使用闭包:

function caller() 
{ 
    var variable=123; 
    calledfunction(); 

    function calledfunction() 
    { 
     console.log(variable); 
    } 
} 
caller(); 
+0

你应该澄清,在第一种情况下,你真的只是玩全局变量,这是通常不鼓励('这个===窗口')。 – 2014-09-19 00:58:01

+0

@FelixKling,好点。我添加了第三个例子,它创建一个空对象来保存数据,而不是使用'this'。 – 2014-09-19 01:16:51

相关问题