我应该如何存储我的javascript变量
How should I store my javascript variables?
我目前正在以这种方式编码:
<script type="text/javascript">
var linkObj;
这是一种安全的数据存储方式吗?我关心的是,如果jQuery或其他插件也使用变量linkObj会怎样。此外,如果我这样声明我的变量,那么它是否也可以被我包含的其他js文件中的脚本中的其他函数看到?
$(document).ready(function(){
var linkObj;
});
只要使用var
关键字,其他插件就无法访问该范围中定义的任何变量。
如果您以这种方式声明一个变量,则页面上运行的所有脚本都可以访问该变量。
如果您只想在本地使用它,请将其封装在一个函数中:
(function() {var linkObj; ... })()
然而,通过这种方式功能之外的任何都无法访问它。
如果你想在不同的脚本之间显式地共享某些变量,你也可以使用一个对象作为名称空间:
var myProject = {}
myProject.linkObj = ...
这将最大限度地减少您必须依赖的全局名称的数量。
将其封装在闭包中:
<script type="text/javascript">
(function() {
var linkObj;
// Rest of your code
})();
</script>
这样,您自己的脚本之外的任何脚本都无法访问linkObj。
这是一种安全的数据存储方式吗
这本身并不是存储数据,它只是在我认为是HTML页面的脚本块中声明一个变量。将来重新加载页面时,它将不包含以前的值。
我关心的是,如果jQuery或其他插件也使用变量linkObj会怎么样
正如其他人所指出的那样,这是一个合理的担忧。但是,您会期望插件不依赖于插件之外的作用域。这不应该影响太多,因为良好的插件设计可能会阻止这种情况的发生。
此外,如果我这样声明我的变量,那么它是否也能被我包含的其他js文件中的脚本中的其他函数看到
是的。只要它们的执行是在加载脚本块之后触发的。这通常遵循脚本声明在页面中显示的顺序。或者,无论它们在页面上的显示顺序如何,如果它们被执行,例如,在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
- 我的javascript for循环不起作用
- 如何将我的javascript库公开给其他客户端使用
- 可以Resharper在我的javascript函数声明中添加分号
- 为什么我的JavaScript堆栈排序函数不起作用
- 页面在我的javascript执行后重新加载,我不希望它这样做
- MVC正在忽略我的Javascript文件
- 为什么我的javascript程序没有将其转换为整数而不是字符串
- 为什么我的JavaScript在Safari上的严格模式下不能正常工作
- 我的javascript太慢了
- 由于某种原因,我的JavaScript函数无法工作
- 为什么我的javascript脚本在页面加载时运行,而不是使用onclick
- 我的Javascript代码出错
- 为什么我的javascript和jquery源文件始终不加载
- AJAX:为什么不是't我的javascript与内容一起加载
- 为什么不是't我的javascript向Project Euler返回正确答案's排名第一
- 为什么当我在带有锚点的页面之间移动时,Rails不重新加载我的javascript文件
- Num doenst在我的javascript中工作
- 在我的JavaScript模块中绑定一个点击事件
- 为什么我的JavaScript函数没有返回选中的数组值
- 使用Ajax将我的Javascript变量传递给PHP