我是初学者,有一个简单的问题,我真的希望有人可以帮助我。我有两个全局函数(a和b)。我在函数a中调用了函数b。如何在不使用全局变量或参数的情况下从函数b访问函数a中的本地代码?
示例:
function a() {
var x= 5
b()
}
function b() {
var y= 8 + x
}
答案 0 :(得分:2)
您必须将x
作为参数传递给函数b(x)
,如下所示。
function a() {
var x = 5;
b(x);
}
function b(x) {
var y = 8 + x;
console.log(y);
}
a();
答案 1 :(得分:0)
您可以通过处理函数参数来实现,您可以使用Objects
传递太多参数
示例:强>
function a() {
var x= 5,other_variable=100;
var objectsOfB = b({x:5,other_variable:other_variable}); /*Pass your object/variables to function b()*/
console.log(objectsOfB); /*All variable from function b()*/
}
function b(objectsOfA) {
console.log(objectsOfA); /*All variables from function a()*/
var y= 8 + objectsOfA.x;
var more_variable = 200;
return {y:y,more_variable:more_variable}; /*Return all variable from function b() to function a()*/
}
a();
注意:从上面的代码中,您可以通过将变量作为对象返回来将两个函数的局部变量用于其他函数。
答案 2 :(得分:0)
通过创建闭包并将范围传递回b
变量函数,这是显式您所指的内容的一种方法。从本质上讲,由于b
是a
内的返回函数,因此它将范围保留为x
,尽管x
在外部范围内仍然不可用:
function a() {
var x = 10;
return function(){
x++;
console.log(x);
};
}
var b = a();
b(); // 11
b(); // 12
b(); // 13
b(); // 14
// Not defined in this scope.
try {
console.log('x:', x);
} catch(e) {
console.log('Exception! ', e);
}

在您的情况下,我确定您只想将其作为变量传递给b
,如b(x)
或
function a(){return 5;}
function b(x){console.log(x + 8);}
b(a());
答案 3 :(得分:-1)
尝试一下,可能与您要求的不一样。 (抱歉我的英语不好)
function a() {
window.x= 5;
b();
}
function b() {
window.y= 8 + window.x;
}