Область создается функциями, а область остается с функцией, поэтому наиболее близким к тому, что вы просите, будет передать функцию из a()
в b()
, и эта функция будет продолжать иметь значение доступ к заданным переменным из a()
.
function a(){
var x = 5;
var obj = {..};
b(function() { /* this can access var x and var obj */ });
}
function b( fn ){
fn(); // the function passed still has access to the variables from a()
}
Хотя b()
не имеет прямого доступа к переменным, которые делает переданная функция, к типам данных, где передается ссылка, например, к объекту, можно получить доступ, если переданная функция возвращает этот объект .
function a(){
var x = 5;
var obj = {..};
b(function() { x++; return obj; });
}
function b( fn ){
var obj = fn();
obj.some_prop = 'some value'; // This new property will be updated in the
// same obj referenced in a()
}