如何在匿名函数/闭包中动态访问变量?

2023-12-05

为了保持全局命名空间干净,我的 JavaScript 代码是这样包装的:

(function() {
    /* my code */
})();

现在我在这个范围内声明了一些变量,我想使用变量变量名来访问它们(例如名称是'something' + someVar)。 在全球范围内我只需使用window['varname'],但显然这是行不通的。

有没有好的方法来做我想做的事?如果不是,我可以简单地将这些变量放在一个对象中以使用数组符号......

Note: eval('varname')不是一个可接受的解决方案。所以请不要建议这样做。


这是一个好问题,因为this不指向匿名函数,否则你显然会使用this['something'+someVar]。即使使用已弃用的arguments.callee在这里不起作用,因为内部变量不是函数的属性。我认为你必须通过创建一个持有者对象来完全按照你所描述的那样做......

(function() {
  var holder = { something1: 'one', something2: 2, something3: 'three' };

  for (var i = 1; i <= 3; i++) {
    console.log(holder['something'+i]);
  }
})();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在匿名函数/闭包中动态访问变量? 的相关文章

随机推荐