最佳实践:Javascript / Jquery保存变量供以后使用

时间:2010-10-25 10:59:31

标签: javascript jquery

我敢肯定,此问题之前已在某处得到解答,但我找不到它。

如果在函数中定义了变量,保存它以供以后使用的最佳做法是什么? 1.“全球”保存?
foo = 'bar';
...
function bar(){
...
foo = 'bat';
return foo;
}
...

此处,变量将在稍后更改。  2.或者将其保存在HTML-DOM中隐藏的表单字段中?

`Thanxs!

3 个答案:

答案 0 :(得分:2)

将其保存为全局JavaScript变量是目前最有效的。

编辑:如果要保存的数据与页面上的元素相关联(例如,表中的每一行都有一些与之关联的数据),并且您正在使用jQuery,有一个data() method比在元素或类似的东西上设置属性更有效。

答案 1 :(得分:2)

它取决于上下文,但可能是:在一个闭包顶层定义的变量中,它包含了它所适用的函数集。

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 };
}();

这可以避免其他脚本(或您自己的其他部分,可能非常大的脚本)意外覆盖它的风险。

答案 2 :(得分:1)

HTML5规范定义了此问题的解决方案:如果您使用的是HTML5,则可以在DOM中指定数据属性。

有关详细信息,请参阅此页:http://ejohn.org/blog/html-5-data-attributes/

现在这是标准化的方式,所以我认为它被认为是最佳实践。编写我上面链接的博客的John Resig也是JQuery的作者,所以如果它对他来说足够好,我应该争辩谁。

真正的好消息是,您甚至不必使用兼容HTML5的浏览器来使用此技术 - 它已经可以在旧版浏览器中使用;它只是现在它被编码到标准中,并且有一种确定的方法来实现它。

也就是说,只要你避免过多地污染命名空间,你的Javascript中的全局变量就没有错,从性能的角度来看它会更有效,所以这种方法也有很多优点。 / p>