在一个php文件中,我有一个这样的脚本片段:
<script>
$(function(){
$("#tabs_<?php echo $keyCode ?>").tabs();
var x = document.getElementById("bkhmode_<?php echo $keyCode ?>");
var mode = x.value;
setcont_<?php echo $keyCode ?>(mode);
});
</script>
我想把这段代码和许多其他类似的代码一起删除到一个单独的JS文件中,以利用缓存,但我一直找不到DEFINE命令的等价物,以允许我替换php echo。
我愿意
DEFINE KEY_CODE = 'somevalue';
那么代码片段看起来会像这样:
<script>
$(function(){
$("#tabs_KEY_CODE").tabs();
var x = document.getElementById("bkhmode_KEY_CODE");
var mode = x.value;
setcont_KEY_CODE(mode);
});
</script>
大多数语言都允许这样做,但我在JavaScript中找不到任何等价的东西。有什么建议吗?
2条答案
按热度按时间jjjwad0x1#
您可以将变量设置为全局窗口名称空间,但这被认为是不好的做法,因为它可能会干扰其他程序,因此要小心。
这应该是可行的,尽管使用IIFE执行此操作是常见的做法。
这有助于解决许多名称空间问题,因为它们是在本地作用域中显式定义的。
您还可以使用全局变量来运行函数。如果你的函数在IIFE之外声明(即你只是在一个全局命名空间中运行它),它也被附加到窗口元素中。例如,这些是等同物。
这是因为如果局部变量
foo
未定义,浏览器将假定您正在调用window.foo
。window['foo']
是调用window.foo
的相同方式;它访问window
对象,但是使用字符串。因此,记住这一点,我们可以完成变量函数调用。您可以对其他对象执行此操作。
bwntbbo32#
你可以使用“new Function(args,body)”功能。Body可以是字符串或通过readFileSync等从外部文件读取。