0

有多个 js 文件,现在我必须将它们组合成一个大文件。

但是,由于这些文件在功能上很熟悉,所以它们有许多同名的变量。所以我想知道是否有任何机制,如命名空间或范围,可以将多个具有相同名称的变量合并到一个文件中。

编辑

还有一个问题:

如何通过 Chrome 控制台访问“ad-hoc”函数中的变量?

通常我可以在 Chrome 控制台中执行此操作:

[js]
var car = "Model T";

[Chrome Console]
>> car
<< "Model T"
>> car = "Model S";
>> car
<< "Model S"

但是现在,我如何在不同的范围内访问变量?

[js]
//lib1
(function(){
var car = "Model T";
})();
//lib2
(function(){
var car = "Model S";
})();

我认为在@user2695276 的解决方案中,答案是微不足道的。所以我的问题是临时功能。

4

2 回答 2

3

立即调用的函数表达式

      //library 1

      (function(){

           //wrap your code within this self executing function

        var x = 'some thing';

      })();


      //library 2

      (function(){

           //wrap your code within this self executing function

        var x = 'another thing';

      })();

变量将按预期工作,并且不会冲突。

于 2013-08-19T06:12:25.327 回答
2

JS 中的变量如果在其声明中没有以 'var' 开头,则默认为全局变量,并且位于全局命名空间中。这可能会造成命名冲突,尤其是在多人编写代码时(似乎是您的情况)。

命名空间:您可以拥有一个大的全局变量来充当应用程序的最顶层命名空间。例如:

App = {
App.views = {} //encapsulates all view objects
App.views.view1 = {} // so on
}

这个单一变量首先保持较少的全局变量(在这种情况下技术上是一个)。所有应用程序的数据都被安全包装,最重要的是,为开发人员建立了一个通用模式。每个人都知道在哪里寻找“收藏”以及在哪里制作新的。

这种命名空间对大型项目有很大帮助。希望你能适应你的场景。

编辑:作为事后的想法,它可能需要架构更改。不确定您有多少时间限制。但从长远来看,这样的东西可以让维护变得容易。

编辑:对于您的其他问题,在 chrome 控制台中查看局部变量的唯一方法是将它们纳入范围。寻找“在 chrome 开发工具中进行断点调试”。一种直接的替代方法是在您希望控制的行上方编写“调试器”以在运行时暂停它。从那里您可以检查变量的运行时值(像往常一样悬停鼠标或在控制台中打印)。请记住在调试完成后删除“调试器”:)

于 2013-08-19T07:43:46.147 回答