谨慎使用js全局变量「建议收藏」

谨慎使用js全局变量「建议收藏」最近踩了JavaScript滥用全局变量的坑。我们知道,在java中有单例模式,使用@Singleton和@Startup注解在相应类上,就可以很方便随时使用它了,既不用频繁new对象(省空间),又不需要手动去维护它。而在我写前台脚本时,也图方便随意的定义了一些js的全局变量,然后就悲催了。首先,请看以下引用https://blog.csdn.net/yangwensheng1122/articl…

大家好,又见面了,我是你们的朋友全栈君。

最近踩了JavaScript滥用全局变量的坑。我们知道,在java中有单例模式,使用@Singleton和@Startup注解在相应类上,就可以很方便随时使用它了,既不用频繁new对象(省空间),又不需要手动去维护它。而在我写前台脚本时,也图方便随意的定义了一些js的全局变量,然后就悲催了。首先,请看以下引用https://blog.csdn.net/yangwensheng1122/article/details/77084503 的博客总结:

“全局变量的优点:可以减少变量的个数,减少由于实际参数和形式参数的数据传递带来的时间消耗。
全局变量的缺点:
(1)全局变量保存在静态存贮区,程序开始运行时为其分配内存,程序结束释放该内存。与局部变量的动态分配、动态释放相比,生存期比较长,因此过多的全局变量会占用较多的内存单元。
(2)全局变量破坏了函数的封装性能。函数象一个黑匣子,一般是通过函数参数和返回值进行输入输出,函数内部实现相对独立。但函数中如果使用了全局变量,那么函数体内的语句就可以绕过函数参数和返回值进行存取,这种情况破坏了函数的独立性,使函数对全局变量产生依赖。同时,也降低了该函数的可移植性。
(3)全局变量使函数的代码可读性降低。由于多个函数都可能使用全局变量,函数执行时全局变量的值可能随时发生变化,对于程序的查错和调试都非常不利。
因此,如果不是万不得已,最好不要使用全局变量。”

(再次声明转载原文:https://blog.csdn.net/yangwensheng1122/article/details/77084503 )

是啊,js里定义的全局变量,通常是为了传参、周转数据方便;如果是这样那么问题来了!它的状态会经常改变,不同的函数改变了它的状态后,在结束当前业务逻辑时,还得要记得判断它的当前状态或者恢复初始状态;要保证函数干净,作用单一,就不能让函数内部变量去和全局变量交换数据(方法污染),否则,函数就对当前文档产生了依赖,不仅不利于复用,更严重的后果就是随着不同的业务逻辑频繁的改变全局变量,最后会发现数据对不上,给调试带来许多麻烦(因为开发时思维即使再缜密,也很难持续跟踪当前这个变量的状态以至于忘了检核或复位它)。所以,决定是否要使用全局变量应先考量它的状态是否会经常改变,如果不稳定,就应尽量避免定义转而尝试其他实现策略。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132359.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java FileInputStream默认编码方式

    Java FileInputStream默认编码方式使用如下代码测试:InputStreamis=newFileInputStream(newFile(“C:\\Users\\Administrator\\Desktop\\test1.txt”));    byte[]bs=newbyte[4096];    intlen=is.read(bs);    System.out.pri

    2022年5月6日
    110
  • python 模板匹配原理与实战

    python 模板匹配原理与实战1 简述为了让大家不至于看到后面的公式就退却 我先简单描述一下模板匹配的原理 简单来说 模板匹配就是你拿一个模板 图片 在目标图片上依次滑动 每次计算模板与模板下方的子图的相似度 最后我们就计算出了非常多的相似度 如果你只是单个目标的匹配 那你只需要取相似度最大值所在的位置就可以得出匹配位置 如果你要匹配多个目标 那就设定一个阈值 就是说 只要咋俩的相似度大于比如 0 8 我就认为你是我要匹配的目标 2 原理 2 1 原理步骤你有一张模板图像 TTT 和一张较大的待搜索图像 III 模板匹配是

    2025年9月3日
    4
  • vista系统改xp_男生隔一小时才回信息

    vista系统改xp_男生隔一小时才回信息昨天装了vista,挺激动的。平时都是在虚拟机上运行vista,重来没见过玻璃效果。并且使用VistaLoaderV2.1.2成功激活(这种方法即不用刷bios,也不用改什么系统文件)用了vista确实是够漂亮,但内存消耗超过700Mb,系统占了硬盘超过7g 。真是佩服M$!!它真pc当成超级计算机啦。最糟糕的uac实在是让人崩溃。看来vista最大的敌人是xp了。

    2022年10月12日
    6
  • 微信个人号机器人

    微信个人号机器人前段时间公司需求开发一套自定义的微信机器人,需求是可以自批量添加好友,自动聊天,自动回复,发朋友圈,转发语音,以及定时群发等,还可以提取聊天内容,进行数据汇总,what????微信还可以这样做!!调研开发了3个月,3个月啊!!!(主要被各种技术走偏路),终于成功了,都是走过的心酸泪,分享给大家,大家学习完,记得给我点个赞!!!大家一般需求点无非是以下几个需求:1.开发个人微信营销系统2.开发自定义的微信机器人,3.开发微信智能聊天客服系统4.定制行业内的群数据分析功能需求很

    2022年5月7日
    49
  • vuetify富文本编辑器_vue富文本编辑器的使用

    vuetify富文本编辑器_vue富文本编辑器的使用最近再弄一个后台管理系统,挑选了不少的编辑器,最终选择了tinymce,UI精美,功能模块多,可按需加载配置来一张tinymce官网的完整功能的图(没梯子可能访问速度有点慢…)下面开始工作:插件安装tinymce官方提供了一个vue的组件tinymce-vue如果有注册或购买过服务的话,直接通过组件配置api-key直接使用,像我这种懒的注册或者购买的直接下载tinymce,自力更生…

    2025年6月5日
    3
  • vmware ubuntu无法联网_虚拟机ubuntu连不上网

    vmware ubuntu无法联网_虚拟机ubuntu连不上网VMwareWorkstationUbuntu20.04LTS无法连接网络问题本文记录了自己使用的安装在VMwareWorkstation上的Ubuntu20.04无法连接到网络的解决过程——终于解决困扰我两个小时的问题出现问题毫无征兆,平时使用正常的Ubuntu在今天打开后发现无法连接到网络,wire图标也莫名的消失,并且在打开网络设置,也没有对wired的设置模块,至于为何会出现这种问题目前没有任何头绪。解决1、将虚拟机网络设置为NAT模式在菜单栏中依次选择:虚拟机>

    2025年9月16日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号