0
点赞
收藏
分享

微信扫一扫

js小题:通过字符串执行同名变量怎么做

JavaScript中,你不能直接使用一个字符串来直接引用一个变量,因为JavaScript是一种静态类型语言(尽管它的类型在运行时可以变化),变量的名字在编译时就被确定了。但是,有几种方法可以实现类似的功能:

  1. 使用对象(或Map)来存储变量: 你可以使用一个对象来存储你的变量,然后使用字符串作为键来访问这些变量。
let myVars = {  
    'var1': 'Hello',  
    'var2': 'World'  
};  
  
let varName = 'var1';  
console.log(myVars[varName]);  // 输出 "Hello"
  1. 使用window对象(在浏览器环境中): 如果你在浏览器环境中运行JavaScript,并且你的变量是全局的,那么它们会被自动添加到window对象中。但请注意,这通常不是一个好的做法,因为它会污染全局命名空间。
var var1 = 'Hello';  
console.log(window['var1']);  // 输出 "Hello"
  1. 使用eval()函数: eval()函数可以执行字符串中的JavaScript代码。但是,eval()是不安全的,因为它可以执行任何代码。因此,除非你有充分的理由,并且了解相关的风险,否则不建议使用它。
var var1 = 'Hello';  
let varName = 'var1';  
console.log(eval(varName));  // 输出 "Hello",但请避免使用这种方式
  1. 使用new Function()构造函数: 与eval()类似,new Function()也可以用来执行字符串中的代码。但它通常用于动态地创建和执行函数,而不是直接访问变量。
var var1 = 'Hello';  
let varName = 'var1';  
let func = new Function('return ' + varName);  
console.log(func());  // 输出 "Hello",但同样,这不是一个好的做法

最安全和最可维护的方法是使用对象(或Map)来存储你的变量,并使用字符串作为键来访问它们。这样可以避免全局命名空间的污染,以及eval()new Function()带来的安全风险。

举报

相关推荐

0 条评论