根据这篇文章
http://www.mediaevent.de/javascript/globale-lokale-variablen.html
全局变量在 JS 中非常危险。
很抱歉它是德语的,但我要指出这篇文章的两个主要陈述。
第一个已经在头部声明的第二段中。
它说“在 JS 中全局变量是危险的,因为它们可以通过名称被其他脚本访问”到目前为止这很好,因为这主要是我想使用全局变量的方式,不是吗?
但在文章中,这听起来可能是随机发生的。这肯定不是预期的行为,是吗?
但更让我害怕的是倒数第二句话。它预测如果多次调用声明全局变量的函数,将产生内存泄漏。但是,如果名称仍然相同,怎么会发生这种情况呢?怎么会有多个同名的全局变量声明?还是这篇文章可能只是某个“半知半解”的人写的?或者只是写给一个根本不习惯全局和本地区别的人?还是 JS 真的是这样表现的?
现在举一个具体的例子:
我希望有人登录到我的页面来创建一个随机生成的令牌并通过单击登录提交它。在每个其他按钮上,我希望这个令牌由不同的函数访问并提交它,这样就可以重新生成新的登录密钥。
对于那个键,我正在考虑使用一个全局变量,它由一个函数声明并由另一个函数返回。但是由于我可能不止一次地生成/重新生成密钥,这会产生内存泄漏吗?还是我指的这篇文章可能只是戏剧化?如果这确实是 JS 的行为方式,那么在我的情况下,使变量可从不同函数访问的好方法是什么?