给出这个例子:
var x = function() { return(0); };
var y = function() { return(x()); };
在控制台中调用 y() 将返回 0。在此范围内更改 x() 将更改 y() 返回的值。这是可能的,因为我可以直接访问 y() 的范围。但是,如果 y() 是在匿名范围中定义的,但我可以访问它,但无法直接访问 x(),我可以将 x() 更改为如下所示:
var x = function() { return(1); };
那么调用 y() 会将这一更改反射(reflect)到 x() 吗?
换句话说,如果只访问 y(),我可以获取它的范围并更改 x() 以便调用 y() 反射(reflect)该更改吗?
最佳答案
不,这是不可能的。在下面的示例中,无法从闭包外部更改 y
引用的 x
。闭包将关闭它自己的作用域及其父作用域。
var y = (function () {
return function y() { return x(); };
function x() { return 0; }
})();
//There's no way to modify x from here
关于javascript - 我可以在匿名范围内更改 Javascript 闭包中引用的函数吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33006700/