封装全局变量是很好的JavaScript实践

Is Encapsulating Globals Good JavaScript Practise?

本文关键字:JavaScript 实践 很好 全局变量 封装      更新时间:2023-09-26

我是javascript的新手,从我正在阅读的全局变量是不好的做法,因为它们污染了全局命名空间。其中之一我经常遇到的问题是可变范围。我在某处读到,解决这两个问题的一种方法是创建一个空对象:

allvars = {}

然后将任何我原本设置为全局的变量,作为属性粘贴到这个对象中:

allvars.animal = 'bear';
allvars.sliderSpeed = 1000;

到目前为止,这对我来说似乎是一个好主意,因为现在我可以在任何地方访问我的变量,无论范围如何,也因为所有的变量都在这个里面

那么这种做事方式有缺点吗?有没有更好的办法?

如果这些变量确实需要在范围内是全局的,并且在任何地方都可以访问,那么这是首选的方法,因为它只在全局命名空间中引入一个全局变量allvars。如果我是你,我会让这个全局名称更独特一点,这样它就不太可能与其他任何东西冲突。但是,除此之外,你的方向是对的。

当真正进入面向对象编程时,真正需要全局化的东西会越来越少,因为您可以将大部分状态存储在相关(非全局)对象上并在那里访问它们。显然,我们不了解你的应用程序,所以我们无法真正评论这些设置是否需要全局