javascript全局命名空间是否在每次完整回发时被清除?

javascript全局命名空间是否在每次完整回发时被清除?,javascript,global-namespace,Javascript,Global Namespace,我一直在读关于用全局变量和函数混乱全局名称空间的危险 我刚刚读到,定义全局函数的“旧”方法是有问题的,特别是在有几个开发人员在同一个项目上工作的情况下 我理解并想写最好的代码,但上面的陈述让我困惑 开发人员很少在项目的同一个页面上工作,我假设当用户更改项目中的页面时,全局名称空间将被清除 不是这样吗?“开发人员很少在项目的同一页上工作” 根据我的经验,这种假设是错误的。特别是,将库用于经常使用的功能是一种很好的做法。库的关键在于它是可重用的。因此,根据定义,库作者“在您的”页面上工作。“开发人员

我一直在读关于用全局变量和函数混乱全局名称空间的危险

我刚刚读到,定义全局函数的“旧”方法是有问题的,特别是在有几个开发人员在同一个项目上工作的情况下

我理解并想写最好的代码,但上面的陈述让我困惑


开发人员很少在项目的同一个页面上工作,我假设当用户更改项目中的页面时,全局名称空间将被清除

不是这样吗?

“开发人员很少在项目的同一页上工作”

根据我的经验,这种假设是错误的。特别是,将库用于经常使用的功能是一种很好的做法。库的关键在于它是可重用的。因此,根据定义,库作者“在您的”页面上工作。

“开发人员很少在项目的同一页面上工作”

根据我的经验,这种假设是错误的。特别是,将库用于经常使用的功能是一种很好的做法。库的关键在于它是可重用的。因此,根据定义,图书馆作者正在“处理您的”页面


开发人员很少在项目的同一页上工作

这是非常不真实的。在维护公司网站的过程中,几个开发人员很容易被雇佣和解雇,他们可能都必须在您创建的同一页面上工作


开发人员很少在项目的同一页上工作

这是非常不真实的。在维护公司网站的过程中,几个开发人员很容易被雇佣和解雇,他们可能都必须在您创建的同一页面上工作


开发人员很少在项目的同一个页面上工作,我假设当用户更改项目中的页面时,全局名称空间将被清除

是的,全局名称空间在每次请求时都被清除,但这不是污染全局名称空间的原因。您似乎正在考虑一个小团队的开发人员,在同一个房间工作。但是,即使如此,如果一个开发人员决定使用某个第三方库或小部件怎么办?如果该小部件修改了全局名称空间,它可能会干扰您当前的代码。这就是为什么最佳实践是避免在全局命名空间上创建变量/函数


开发人员很少在项目的同一个页面上工作,我假设当用户更改项目中的页面时,全局名称空间将被清除


是的,全局名称空间在每次请求时都被清除,但这不是污染全局名称空间的原因。您似乎正在考虑一个小团队的开发人员,在同一个房间工作。但是,即使如此,如果一个开发人员决定使用某个第三方库或小部件怎么办?如果该小部件修改了全局名称空间,它可能会干扰您当前的代码。这就是为什么最佳实践是避免在全局命名空间上创建变量/函数。

首先-是的,当页面重新加载所有javascript时,会重新初始化。因此,如果您有以下
窗口,则每次加载页面时,foo
将始终是一个窗口:

window.foo = 1;

alert(foo);

window.foo++;
第二,在团队中(或在您的项目中)一种可以使用名称空间的方法如下:

var myCompany = {};

myCompany.Utils = {};

myCompany.Utils.doSomething = function() {
  alert("doSomething");
};

myCompany.Utils.doSomethingElse = function() {
  alert("doSomethingElse");
};

myCompany.Utils.doSomethingElse();

这不仅可以防止开发团队内部的“冲突”。它还可以防止您的代码与页面上引用的另一个第三方javascript意外“碰撞”。

首先-是,当页面重新加载所有javascript时,会重新初始化。因此,如果您有以下
窗口,则每次加载页面时,foo
将始终是一个窗口:

window.foo = 1;

alert(foo);

window.foo++;
第二,在团队中(或在您的项目中)一种可以使用名称空间的方法如下:

var myCompany = {};

myCompany.Utils = {};

myCompany.Utils.doSomething = function() {
  alert("doSomething");
};

myCompany.Utils.doSomethingElse = function() {
  alert("doSomethingElse");
};

myCompany.Utils.doSomethingElse();

这不仅可以防止开发团队内部的“冲突”。它还可以防止您的代码与页面上引用的另一个第三方javascript发生意外的“碰撞”。

我认为这个问题的标题并不能很好地描述这个问题。实际问题的答案是“是”,名称空间被清除。但问题是为什么需要使用某种名称空间设备。原因是您可能会遇到标识符冲突(“全局名称空间的混乱”),我很理解这种需要。是我正在读的那篇文章使我担心。我认为作者的意思是,也许全局名称空间在同一个域中仍然存在。(我不认为这是真的,但我想证实一下)我认为这个问题的标题并不能很好地描述这个问题。实际问题的答案是“是”,名称空间被清除。但问题是为什么需要使用某种名称空间设备。原因是您可能会遇到标识符冲突(“全局名称空间的混乱”),我很理解这种需要。是我正在读的那篇文章使我担心。我认为作者的意思是,也许全局名称空间在同一个域中仍然存在。(我不认为这是真的,但想验证一下)也许我应该说,‘我很少体验到开发人员在同一页面上工作。’也许我应该说,‘我很少体验到开发人员在同一页面上工作。’!我没有想到开发人员在我的页面引用的库上工作!这只是一个例子。即便如此,很多开发者还是把我的工作放在了页面的核心功能上。啊!我没有想到开发人员在我的页面引用的库上工作!这只是一个例子。即使如此,许多开发者还是在我的网页核心功能上做了很多工作。谢谢!这很有道理。我只在小团队中工作过,我想做那些更了解情况的人建议的事情。我只是想更好地理解这件事。谢谢!这很有道理。我只在小团队中工作过,我想做那些更了解情况的人建议的事情。我只是想试试