Параметр x
в func2
полностью отличается от переменной x
в func1
. Когда вы делаете 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();
Возможно, лучший пример, используя значение x
в func2
:
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
заполнить свойства для него, это зависит от варианта использования [и от того, придерживаясь парадигм неизменности]).