全局变量javascript、java、php,所有语言

global variables javascript, java, php, all languages

本文关键字:语言 php javascript java 全局变量      更新时间:2023-09-26

我总是在网上读到全局变量是坏的,我知道它们是坏的是因为每个函数都可以访问它们,如果应用程序中的每个函数都修改全局变量,那么在大型应用程序中,跟踪代码中特定点上该变量的状态可能会变得非常困难。

但我的问题是,如果我有一个变量,每个函数都需要使用,那么将其声明为全局变量不是更好吗?而不是每次在每个函数中都实例化我的变量?

此外,我什么时候应该使用全局变量而不是局部变量?

每个变量都代表一些真实的或可以想象的实体。如果你确定实体是唯一的,那么可以为它设置静态变量。例如,screen/keybord/mouse设备用java.awt.Toolkit类型的静态变量表示(可通过getter访问)。但这种情况很少见。通常,程序员会想到实体的单个实例,并为其声明一个静态变量,然后需要另一个类似的实体,这最终会导致费力的重构。

这一切都与代码运行时的内存利用率有关。在代码运行时,您总是尽量减少内存中的对象数量。具有较小作用域(方法作用域)的对象,您的对象在内存中的生存时间将减少,因此内存利用率很高。因此,需要尽可能减少变量的作用域。但是您对全局变量的声明并不完全正确,因为在java中,我们有访问修饰符(public、private、default等),如果任何全局变量(类变量)都有private修饰符,那么它就不能被类外修改。