Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
最佳实践:Javascript/Jquery保存变量供以后使用_Javascript_Jquery - Fatal编程技术网

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

最佳实践:Javascript/Jquery保存变量供以后使用,javascript,jquery,Javascript,Jquery,我敢肯定,这个问题以前在什么地方得到过回答,但我就是找不到 如果在一个函数中定义了一个变量,那么保存该变量以供以后使用的最佳做法是什么?1.“全局”保存它? foo='bar'…功能栏(){ … foo='bat'; 返回foo; }。。。 在这里,稍后将更改变量。 2.或者将其保存在HTML-DOM中的隐藏表单字段中 `坦克斯 将其保存为全局JavaScript变量是迄今为止最有效的方法 编辑:如果要保存的数据与页面上的某个元素相关联(例如,表中的每一行都有一个与之关联的数据位),并且您正在

我敢肯定,这个问题以前在什么地方得到过回答,但我就是找不到

如果在一个函数中定义了一个变量,那么保存该变量以供以后使用的最佳做法是什么?1.“全局”保存它?
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 };
}();