我有一个巨大的业务逻辑需要在以下两个函数中执行,但我遇到了一个问题。我知道它与关闭有关,但我不知道如何解决。你能透过一些光吗?
function func1() {
var x = false;
console.log('before going inside func '+x);
func2(x);
console.log('After coming outside => '+x);
//Instead of true its displaying false
}
function func2(x)
{
x = true;
console.log('inside func => '+ x);
}
func1();
我原来的问题如下
function func1() {
var x = false;
var y =1;
var z=3;
func2(x,y,z);
console.log(x,y,z);
//INSTEAD OF true,10,30; its displaying false,1,3
}
function func2(x,y,z)
{
x = true;
y=10;
z=30;
}
func1();
最佳答案
func2
的 x
参数与 func1
中的 x
变量完全不同。当您执行 func2(x)
时,x
的值将传递给 func2
,而不是某种引用到变量。 (有些语言会这样做;JavaScript 不会。)
要从函数返回信息,请在函数中使用 return
,并在调用函数时使用函数的返回值:
function func1() {
var x = false;
console.log('before ' + x);
x = func2(x); // *** Note `x =`
console.log('after ' + x);
}
function func2(x) {
return true;
}
func1();
也许是一个更好的示例,在 func2
中使用 x
的值:
function func1() {
var a = 1;
var b = 12;
console.log('a before: ' + a);
a = func2(a);
console.log('a after: ' + a);
console.log('b before: ' + b);
b = func2(b);
console.log('b after: ' + b);
}
function func2(x) {
return x * 2;
}
func1();
如果要返回复杂信息,请返回一个具有复杂信息属性的对象(或传入一个对象,并让 func2
填充其属性,这取决于用例[以及您是否遵守不变性范例])。
关于javascript - 无法访问嵌套函数内更改的变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53191674/