作为函数的输入,我得到一个字符串范围名称,如FORM
或COOKIE
。 如何使用括号表示法访问这些顶级示波器?如何使用括号表示法访问示波器?
我在寻找类似:
var myScope = "FORM";
global[myScope];
显然,虽然:)
(我不是在寻找任何一种eval
功能不工作,我宁愿switch
通过串手动获得比eval
功能的权利范围...)
编辑
功能是必需的,所以我可以在请求中尽早调用一个简单/可访问的函数,以识别发送错误类型数据或仅发送所需数据的错误请求。
例如,我会尽可能早地调用下面的函数在需要的变量FORM.data1:numeric
,FORM.data2:bit
和COOKIE.data3:string
的请求:
<cfset require({
"FORM" : {
"data1":"numeric",
"data2":"bit"
},
"COOKIE":{
"data3":"string"
}
})>
我知道,下面可能是一个有点容易:
<cfset require({
"FORM.data1":"numeric",
"FORM.data2":"bit",
"COOKIE.data3":"string"
})>
,并不仅仅是使用isDefined
但我需要其他功能的一些更大的灵活性。
你不”吨。范围已经是全球性的。 **为什么你要这样做?**(可能有更好的方法。) – 2012-08-10 13:27:36
使用Evaluate()。这种事情就是它的存在,除非这个代码处于特别紧密的循环中,否则不会有性能问题。如果可能受到用户输入的影响,您将需要注意对输入进行消毒。 – barnyr 2012-08-10 13:31:10
通过搜索所有范围似乎打败了变量范围开始的目的。 – Busches 2012-08-10 13:31:41