在 DOM 中构建全局变量
Build up of global variables in the DOM
我正在开发一个应用程序,我大量使用 AJAX 调用将部分 MVC 视图导入我的 DOM。
我注意到一些奇怪的零星行为,变量会失去它们的状态。我希望有人能帮助我确认我对为什么会发生这种情况的怀疑
例如,我有以下部分观点:.JS:
--begin script tags
var var1 = 1;
var var2 = 2;
var manager = null;
$(document).ready(function()
{
//Do stuff
manager = new Manager();
});
--End script tag
<div>
Markup in partial view
</div>
如果用户单击按钮,部分视图会一遍又一遍地导入到我的 dom 中。它每次都插入到同一个元素中,每次都有效地覆盖自身。我的问题是:多次将此部分加载到 DOM 中会导致脚本块多次添加到我的 DOM 中吗?每次将部分视图拉入 DOM 时,JS 是否会落后一次?
该脚本已大大简化,但一个例子是管理器可以为 null,即使在初始化后也是如此。我的猜测是 DOM 中可能有多个实例......
似乎我可以通过将整个 JS 块包装在自调用闭包中来解决此问题,但我不确定这是否必要......我想知道是否有人对为什么需要关闭有一个很好的解释。我的理论是,它可以防止在 DOM 中构建多个版本的分部视图脚本块......
添加由单个自调用闭包组成的脚本不会在全局命名空间中引入新变量,它只定义一个函数,然后调用它,然后立即忘记它,因为它没有外部引用。
另一方面,分部视图在每次导入全局命名空间时都会在全局命名空间中引入 var1
、 var2
和 manager
,从而覆盖以前的定义。这可以解释您遇到的零星变量行为。
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- delete关键字在全局变量上的不同行为
- 在javascript函数中设置全局变量
- 如何将getJson的响应保存在全局变量中
- 从Javascript方法返回全局变量
- AngularJS中的封装窗口全局变量
- javascript隐式全局变量
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 如何使全局变量仅特定于该文件
- 在page.open()-PhantomJS中无法访问全局变量
- 使用全局变量来存储数字(JavaScript)
- 如何将变量声明为全局变量
- 在节点中创建文件全局变量
- 在Javascript中使用全局变量作为缓存是很好的
- 创建要在其他函数中使用的全局变量
- 为了避免创建全局变量,可以将所有变量分配给一个对象吗
- 函数中的innerHTML(全局变量?)
- 如何在javascript中为全局变量赋值
- 在 DOM 中构建全局变量
- 在Webpack构建中使用一个暴露全局变量的脚本