Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将变量名与Thymeleaf连接_Javascript_Thymeleaf - Fatal编程技术网

Javascript 将变量名与Thymeleaf连接

Javascript 将变量名与Thymeleaf连接,javascript,thymeleaf,Javascript,Thymeleaf,我尝试连接变量名,但它无法按预期工作: <script type="text/javascript" th:inline="javascript">/*<![CDATA[*/ var jc[[${f.hash}]]; /*]]>*/</script> /**/ 结果:var jc'E4407CA0C7899E91403E94719D132C3C5D31C87CF5B3B60A1A7DAEC8DFF3360' 预期:var JCE4407CA0C7899E9

我尝试连接变量名,但它无法按预期工作:

<script type="text/javascript" th:inline="javascript">/*<![CDATA[*/
var jc[[${f.hash}]];
/*]]>*/</script>
/**/
结果:
var jc'E4407CA0C7899E91403E94719D132C3C5D31C87CF5B3B60A1A7DAEC8DFF3360'


预期:
var JCE4407CA0C7899E91403E94719D132C3C5D31C87CF5B3B60A1A7DAEC8DFF3360

看起来您想用一个变量定义的名称声明一个变量。我不知道为什么,但如果你真的想这么做:

你可以用

var hash = [[${f.hash}]];
eval('var jc'+hash);
这在严格模式下不起作用。如果强制执行某些安全策略,它也不会起作用

如果要在全局范围内创建变量,还可以使用

var hash = [[${f.hash}]]; 
window['jc'+hash] = undefined; //In browser application
global['jc'+hash] = undefined; //In node.js environment
或者,如果要在函数中声明变量

this['jc'+hash] = undefined;

注意:尽管JS sintax允许您使用所有这些选项,但无论您遇到什么问题,我都不建议您这样做。这被认为是一种不好的做法,我99%相信不用使用奇怪的技巧也可以做到。难以维护的代码并不酷。任何读过这篇文章的人都很难理解它为什么会出现

我在做一些工作时遇到了同样的问题,我需要创建一组具有不同名称的类似
处理程序
javascript对象

我在javascript代码中使用了以下内容

<script th:inline="javascript">
/*<![CDATA[*/
var handler[[${iter.index}]] = new Handler();
...
handler[[${iter.index}]].close();
/*]]>*/
</script>

/**/
他是这样的:

<script>
var handler0 = new Handler();
...
handler0.close();
</script>

<script>
var handler1 = new Handler();
...
handler1.close();
</script>

var handler0=新处理程序();
...
handler0.close();
var handler1=新处理程序();
...
handler1.close();

这正是我所需要的。

通常内联脚本用于获取变量的值,而不是变量名本身
f.hash
是一个字符串变量,因此它以
作为前缀和后缀呈现。使用此值作为变量试图实现什么?是否确实需要使用“变量”名称声明变量?这样做的目的是什么?它应该可以工作,但我不喜欢使用eval。我的JS到处都有
eval()
:/