如何正确传递我的范围以查找变量

时间:2014-05-27 12:35:49

标签: javascript

我试图使用javascript APPLY函数将范围从1个函数传递到另一个函数,但似乎我可能做错了?

如果您需要,可以使用以下内容: http://jsfiddle.net/C8APz/

这是我的代码:

function a(){
    var x = "hello";
    b.apply(this, []);
}

 function b(){
    console.log("x: ", x);
}

a();

我在想,在传递范围时,变量/变量引用不是。

有没有办法在不定义Globals的情况下做这样的事情?

我应该将数据添加到它的实际部分,例如this.x = x;吗?然后在另一个函数中只是获取它? var x = this.x;

function a(){
    var x = "hello";
    this.x = x;
    b.apply(this, []);
}

 function b(){
    var x = this.x;
    console.log("x: ", x);
}

a();

编辑:似乎第二个示例分配了全局范围,这并不好,并且在范围内,我试图将对上下文的理解传递给。看来你必须在传递它之前定义一个上下文,否则,大部分这个指的是window

2 个答案:

答案 0 :(得分:3)

你不能通过范围。

您可以在b的函数声明中移动a的函数声明,以便范围是正确的,或者您可以使用参数传递您关心的变量。


function a(){
    var x = "hello";
    b();

    function b(){
        console.log("x: ", x);
    }
}

a();

function a(){
    var x = "hello";
    b(x);
}

function b(x){
    console.log("x: ", x);
}

a();

答案 1 :(得分:0)

从函数体中声明var x; ...

var x;
function a(){
    x = "hello";
    b.apply(this, []);
}

function b(){
    //a.apply(this,[]);
    console.log("x: ", x);
}

a();