最佳实践:Javascript/Jquery保存变量供以后使用
我敢肯定,这个问题以前在什么地方得到过回答,但我就是找不到 如果在一个函数中定义了一个变量,那么保存该变量以供以后使用的最佳做法是什么?1.“全局”保存它?最佳实践:Javascript/Jquery保存变量供以后使用,javascript,jquery,Javascript,Jquery,我敢肯定,这个问题以前在什么地方得到过回答,但我就是找不到 如果在一个函数中定义了一个变量,那么保存该变量以供以后使用的最佳做法是什么?1.“全局”保存它? foo='bar'…功能栏(){ … foo='bat'; 返回foo; }。。。 在这里,稍后将更改变量。 2.或者将其保存在HTML-DOM中的隐藏表单字段中 `坦克斯 将其保存为全局JavaScript变量是迄今为止最有效的方法 编辑:如果要保存的数据与页面上的某个元素相关联(例如,表中的每一行都有一个与之关联的数据位),并且您正在
foo='bar'
…
功能栏(){
…
foo='bat';
返回foo;
}
。。。
在这里,稍后将更改变量。
2.或者将其保存在HTML-DOM中的隐藏表单字段中
`坦克斯 将其保存为全局JavaScript变量是迄今为止最有效的方法
编辑:如果要保存的数据与页面上的某个元素相关联(例如,表中的每一行都有一个与之关联的数据位),并且您正在使用jQuery,则有一种方法比在元素或类似内容上设置属性更有效。这取决于上下文,但可能是:在闭包的顶层定义的变量中,该闭包封装了它所应用的函数集 i、 e
这避免了其他脚本(或您自己的脚本的其他部分,可能非常大的脚本)意外覆盖它的风险。HTML5规范定义了一个解决方案:如果您使用HTML5,您可以在DOM中指定数据属性 有关更多信息,请参阅本页: 这是现在标准化的做法,所以我想这是最好的做法。另外,写了我上面链接的博客的John Resig也是JQuery的作者,所以如果它对他来说足够好的话,我是谁来争论呢 真正好的消息是,你甚至不必使用兼容HTML5的浏览器,这项技术就可以工作——它已经在旧浏览器中工作了;只是现在它已经被编码到标准中,并且有一个明确的方法来实现它
也就是说,Javascript中的全局变量没有问题,只要您避免过多地污染名称空间,而且从性能角度来看,它会更有效,因此这种方法也有很多优点。取决于如何使用它以及为什么使用它。如果它只在同一个函数中使用,您可以将其作为属性存储在函数名栏[“foo”]=”,但如果它要在其他地方使用,则最好从一开始就在那里声明它。注意:我想您可能希望编辑它,使其显示为
foo=“bar”;函数栏(){…foo=“bat”return foo;}
。至少我是这样理解这个问题的。这是我思考的一个例子:函数c(){if(typeof c[“1”]==“undefined”)c[“1”]=1;document.write(c[“1”]+;}c();它作为一个静态变量工作。顺便问一下,如何在注释中突出显示代码;)@David Mårtensson,你的代码周围有回音。(钥匙可能就在ESC钥匙的正下方)。看起来是这样的:`(这也可以用于Qs和As中的内联代码)嗨,Spudley,谢谢你的回答。我只是试着用雷西格的方式。然而,在使用XHTML 1.0 Strict:-(@Mike:John Resig的博客确实简要讨论了如何在XHTML(附加名称空间)中实现这一点)时,使用“数据名”等属性目前是无效代码(W3C),并链接到另一个更详细地讨论它的博客。不过,我还是建议现在不要严格使用XHTML。XHTML已经有了它的一天;HTML5是一个功能强大得多的规范,如果你迟早不跳的话,你将失去未来的功能(在这个阶段,它只是对doctype的一个更改,所以很容易实现)。
var exports = function () {
var stored_data;
function set_data(foo) {
stored_data = foo;
}
function get_data() {
return stored_data;
}
return { get: get_data, set: set_data };
}();