是否可以在JavaScript的闭包内部更改变量?
作者:互联网
假设我有以下内容:
(function() {
let myVar = 300;
window.myFunc = function() {
console.log(myVar);
};
})();
在不更改上述代码的情况下,您能想到一种更改myVar变量的方法吗?我的意思是从外面说,您能做些什么:
window.myFunc.__closure__.myVar = 10;
这可能吗?
解决方法:
不,这是不可能的,因为变量的范围是函数的块.
修改闭包内部内容的唯一方法是通过当前词法上下文中的属性(在本例中为window对象).
(function() {
this.myVar = this.myVar || 300;
window.myFunc = function() {
console.log(myVar);
};
})();
myVar = "Ele";
myFunc();
标签:closures,javascript 来源: https://codeday.me/bug/20191108/2005677.html