【问题标题】:How to set specific variable name?如何设置特定的变量名?
【发布时间】:2018-12-21 15:39:33
【问题描述】:

是否可以在重复函数(对象编程)中设置特定的变量名?

我需要重用这个函数,每次使用时我都需要指定变量名(函数属性 + a)。

function test(test)
{
    var a + test = 'test text';
    console.log(atest);
}

test('test');

我需要变量atest 来生成'test text'

【问题讨论】:

  • 这是一个常见问题。基本的答案是不可能“构造”一个​​变量名并按原样使用它(在 JavaScript 中)。 可以构造一个对象属性名称。人们经常构建包含全局变量名称的字符串,并将它们作为window 对象的属性进行访问,但这不适用于函数中声明的变量。 eval() 函数是另一个(有问题的)选项。最后,通常情况下,有更好、更惯用的方法来实现更大的目标。
  • 其实你可以做eval("var a" + "test" + "= 'test text';")这样的事情,但它有一些安全问题,我不会推荐它。
  • 每次运行函数时,函数范围内的变量都是不同的变量 - 特定于函数运行,即使名称相同...您还 需要什么我>?

标签: javascript dictionary global-variables


【解决方案1】:

你想要的是一个像 myVariables 这样的作用域命名空间来用作字典,例如

// this prevents keys like `hasOwnProperty` from being pre-defined on namespace
var myVariables = Object.create(null);

function test(name) {
  myVariables['a' + name] = 'test text';
}

test('test');
console.log(myVariables.atest);

【讨论】:

    【解决方案2】:

    这确实是一个糟糕的编程,但答案是:

      window['a'+'test'] = 'test text';
      
      console.log(atest);

    【讨论】:

      猜你喜欢
      • 2021-12-19
      • 1970-01-01
      • 2017-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-27
      • 2021-07-15
      • 1970-01-01
      相关资源
      最近更新 更多