如何使用javascript创建具有多个var的var名称?
我想从多个var和文本中创建一个var name如何使用javascript创建具有多个var的var名称?,javascript,Javascript,我想从多个var和文本中创建一个var namea\u test\u 3\u check,使用javascript为该代码创建一个var namea\u test\u check,我想提醒test 我尝试使用此代码,但没有工作。我该怎么办 <script> var a_test_3_check = "test"; var x = "test"; var y = "check"; var z = 'a_'+x+ '_3_' +y; alert(z); </script>
a\u test\u 3\u check
,使用javascript为该代码创建一个var namea\u test\u check,我想提醒test
我尝试使用此代码,但没有工作。我该怎么办
<script>
var a_test_3_check = "test";
var x = "test";
var y = "check";
var z = 'a_'+x+ '_3_' +y;
alert(z);
</script>
var a_test_3_check=“test”;
var x=“测试”;
var y=“检查”;
var z='a_u'+x+''u3_'+y;
警报(z);
当我测试代码时,我总是发出警报a\u test\u 3\u check
,我该怎么做
<script>
var a_test_3_check = "test";
var x = "test";
var y = "check";
var z = 'a_'+x+ '_3_' +y;
alert(z);
</script>
谢谢您提出的每一个问题。如果您尝试使用eval()
,您将得到您想要的
var a_test_3_check = "test";
var x = "test";
var y = "check";
var z = 'a_'+x+ '_3_' +y;
alert(eval(z));
但是,您不应该使用eval()
因为这不是获取变量中的变量的正确方法,请尝试使用对象结构
var obj={
x:“测试”,
y:“检查”,
a_测试_3_检查:“测试”
};
变量z='a_u'+obj.x+'u3_'+obj.y;
console.log(obj[z])
您可以使用eval()
,如果此函数的参数表示表达式,eval()
对表达式求值。如果参数表示一个或多个JavaScript语句,eval()
对语句求值
var z=eval('a_'+x+''u3_'+y)代码>不要使用eval
,这是一种非常糟糕的做法。但是,要使用变量值作为变量名,请将变量放在包含变量的对象后的方括号([]
)中,而不是在变量名后面写一个点。例如:
// Instead of writing this
obj.variableName
// Write the following
obj[varContainingName]
如果希望执行相同的操作,但对于全局范围,每个节点执行环境的操作都是不同的。如果要为前端编写javascript,请使用窗口作为对象(obj
)。对于服务器端JavaScript,我不确定是否有方法声明全局变量,但无论如何,这不是一个好的实践。相反,您应该在模块中声明对象变量,如果您需要在另一个模块中导出它们。例如:
// Instead of writing this
obj.variableName
// Write the following
obj[varContainingName]
模块1.js
module2.js
但是,应用于从其他模块导入的变量的更改仅对当前模块可见,直到您导出带有更改的变量。在有人发布答案之前,请使用以下命令获取我的注释:如果您遇到必须动态构造和计算变量名的情况,你的设计很可能有问题。解释你想要达到的目标,我们可以帮助你想出替代方案。@RobbyCornelissen要进一步说明这一点,你永远没有理由需要这样做。变量的名称不应影响代码的功能。@SpencerWieczorek我们完全同意。然而,已经有两个eval()
答案了,而且他们的投票率还在上升。不要这样做。不应动态生成变量名。最多,您应该创建一个JavaScript对象,然后根据其键获取值,这是非常好的。阅读。你尝试过我的解决方案吗?向下,查看我的编辑。。我不是在写代码,同时你刚刚投了两次反对票。没有等待我的完整答案:(1)没有人可以投两次反对票2)如果你想让人们在投票前等待你的完整答案,在你有完整答案之前不要发帖子。是的,我完全同意你的意见,先生。对不起,这是我的错:(在完成我的回答之前点击post按钮。还有一件事两次意味着两个人,我的英语不太好:)