编程语言
首页 > 编程语言> > 是否可以在JavaScript的闭包内部更改变量?

是否可以在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