我试图使用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
答案 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();