知识卡片
全局变量最危险
内容
全局变量在所有作用域可见,可被程序任何部分任意时间修改,让程序行为极度复杂、降低可靠性;程序越大问题越突出。全局变量还让独立子程序难以共存——命名偶然相同就会冲突且难调试。JS 没有链接器,所有编译单元顶级变量都塞进同一全局对象,因此不只是”允许”而是”依赖”全局变量。关联:[[全局变量污染]];发散:全局状态让局部阅读失效,是可靠性和可测试性的共同敌人。
参考来源
- 位置:《JavaScript语言精粹(修订版)》附录A《毒瘤 Awful Parts》"全局变量"一节
- 结论依据:原文称全局变量是"JavaScript所有的糟糕特性之中,最为糟糕的一个",说明它可被程序任何部分在任意时间修改、让子程序间命名冲突难以调试,并强调 JavaScript 因缺少链接器而"依赖"全局变量(不只是允许),据此推出全局变量是最危险特性的结论。
- 原始内容:在JavaScript所有的糟糕特性之中,最为糟糕的一个就是它对全局变量的依赖……因为一个全局变量可以被程序的任何部分在任意时间修改,它们使得程序的行为变得极度复杂。在程序中使用全局变量降低了程序的可靠性。