我有一些大的js文件,其中的函数和对象都存在于全局范围内,并且它们之间有函数调用。是否有一种相对简单的方法将它们放在当地范围内。
<script src="fileA.js"></script>
<script src="fileB.js"></script>
<script src="fileC.js"></script>
我尝试将(function(){
放在A文件的开头,将})();
放在最后一个文件的末尾,但它不起作用。
10x为你的帮助BR
答案 0 :(得分:2)
不,没有。
最接近的是将它们设置为通过命名空间共享变量(一个名称选中的单个全局变量,不太可能发生冲突),例如window.YOUR_SCRIPT_NAME = {}
。
答案 1 :(得分:2)
你不能像那样包装它,因为每个脚本仍然是单独解析的(<script>
标签只是将内容包含在文件中不起作用)。
您可以简单地手动连接文件,将function(){ ... }()
放在整个内容周围,并将这个新连接的脚本作为一个单元使用。
如果脚本内容的重写是可行的,您可以使用在其他答案中提到的Quentin等工厂方法中使用的共享范围。但是,一个更好的解决方案(如果你可以重写,如果这是一个更大的项目)将切换到具有依赖关系的完整模块概念,如AMD。
答案 2 :(得分:1)
您可以使用Ajax将file.js的内容作为字符串获取,而不是使用脚本src =“file.js”。比当地范围更好。
eval.call(yourlocalscope, string)