我应该如何存储javascript变量?

我应该如何存储javascript变量?,javascript,jquery,Javascript,Jquery,我目前正在以这种方式编码: <script type="text/javascript"> var linkObj; var-linkObj; 这是存储数据的安全方式吗?我关心的是,如果jQuery或其他插件也使用变量linkObj,该怎么办。另外,如果我像这样声明我的变量,那么我包含的其他js文件中的脚本中的其他函数也可以看到它吗 $(document).ready(function(){ var linkObj; }); 只要您使用var关键字,在该范围内定义的任

我目前正在以这种方式编码:

<script type="text/javascript">
var linkObj;

var-linkObj;
这是存储数据的安全方式吗?我关心的是,如果jQuery或其他插件也使用变量linkObj,该怎么办。另外,如果我像这样声明我的变量,那么我包含的其他js文件中的脚本中的其他函数也可以看到它吗

$(document).ready(function(){
   var linkObj;

});

只要您使用
var
关键字,在该范围内定义的任何变量都不会被其他插件访问。

I您可以通过这种方式声明变量,页面上运行的所有脚本都可以访问该变量

如果您只想在本地使用它,请将其包装在函数中:

(function() {var linkObj; ... })()
但是,通过这种方式,函数之外的任何东西都无法访问它

如果要在不同脚本之间显式共享某些变量,还可以使用对象作为命名空间:

var myProject = {}
myProject.linkObj = ...
这将最大限度地减少您必须依赖的全局名称的数量。

将其包装在一个闭包中:

<script type="text/javascript">
(function() {
    var linkObj;
    // Rest of your code
})();
</script>

(功能(){
var-linkObj;
//代码的其余部分
})();
这样,您自己的脚本之外的任何脚本都无法访问linkObj。

这是存储数据的安全方法吗

这并不是存储数据本身,它只是在脚本块中声明一个变量,我假设它是一个HTML页面。将来重新加载页面时,它将不会保存以前的值

我关心的是,如果jQuery或其他插件也使用变量linkObj,该怎么办

正如其他人指出的那样,这是一个合理的担忧。然而,您希望插件不依赖于插件之外的作用域。这不会造成太大影响,因为良好的插件设计可能会阻止这种情况发生

另外,如果我像这样声明我的变量,那么我包含的其他js文件中的脚本中的其他函数也可以看到它吗

$(document).ready(function(){
   var linkObj;

});
对。只要在加载脚本块后触发它们的执行。这通常遵循脚本声明在页面中的显示顺序。或者不管它们在页面上的显示顺序如何(例如,在jquerydom“ready”事件之后执行)

经常听到这样的说法:避免与此相关的“全局名称空间污染”是件好事。要实现这一点,您可以使用函数来包含代码,并在脚本块中直接调用该函数

(function () {
    var a = 1; // the scope is within the function

    alert('The variable a is equal to: ' + a);

}) (); // the parenthesis invoke the function immediately

如果我这样做,那么如果有多个脚本声明var myProject={},可以吗?我问这个问题是因为我不确定在哪里声明将被共享的vmyProject名称空间。谢谢。不,多个脚本仍然可以声明
myProject
,并破坏您的绑定。但是,如果您给它一个足够唯一的名称(例如,您的项目名称),您应该不会有任何问题。如果你真的有妄想症,你可以在指定一个名字之前检查它是否被取下。对不起,我不清楚。我的意思不仅仅是我自己的剧本。如果两个脚本都使用相同的名称空间,但我不确定哪个脚本可以运行?在这种情况下,只需检查对象是否已经存在,例如:
var myProject=myProject | |{}
。在此之后,将其用作命名空间应该是安全的。您可以检查对象上的属性是否以大致相同的方式定义。