博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
全局变量污染什么的最讨厌了
阅读量:5795 次
发布时间:2019-06-18

本文共 905 字,大约阅读时间需要 3 分钟。

原则

  1. 用匿名函数将脚本包起来;

  2. 使用多级命名空间。

这第二条“使用多级命名空间”这个,我觉得并不是很完美的好主意。因为如果级数太多的话会造成变量名字变得长的一逼。

改进过程

原始代码

没有做过任何优化的满目疮痍的代码。a.js 和 b.js 都有全局变量 window.a ,导致冲突,全局变量属于 window 作用域下的。

//a.js//b.js

使用匿名函数

通过匿名函数改变了a.js 和 b.js 中的变量 a 的作用域,使得他们都不再是全局变量了,但是在 b.js 中无法访问在 a.js 中的变量 a, 换而言之,他们之间没办法通信了。

//a.js(function() {    var a = 123, b = "hello world";})();//b.js(function() {    var a, c = "abc";})();

使用全局变量进行通信

var str;//a.js(function() {    var a = 123,    b = "hello world";    window.str = a;})();//b.js(function() {    var a, c = "abc";    alert(window.str);})();

使用 window.str 这种全局全局变量作为通信的媒介其实并不是一个好办法,这样做会导致全局变量越来越多,反而不好维护。

使用命名空间

var GLOBAL = {};//a.js(function() {    var a = 123,    b = "hello world";    GLOBAL.A.a = a;})();//b.js(function() {    var a, c = "abc";    alert(GLOBAL.A.a);})();

使用单一的全局变量 GlOBAL ,匿名空间里需要保存的属性都在全局变量 GLOBAL 的基础上使用命名空间的方式进行拓展。这里给命名空间起名字也需要很讲究,好的命名规则会对团队协同合作有很大的帮助。具体的命名方式待我卖个关子,以后再说。

转载地址:http://ehbfx.baihongyu.com/

你可能感兴趣的文章
CSS定位元素--浮动与清除
查看>>
2016-09-14
查看>>
rsync工具
查看>>
json jsonp json跨域
查看>>
java.util.ConcurrentModificationException异常
查看>>
Linux下oracle自启动
查看>>
java-理解JVM
查看>>
dispatch自画和XML布局双剑合璧
查看>>
javascript杂谈
查看>>
2018 | 七月日记
查看>>
Elasticsearch+Kibana+Logstash 搭建日志平台
查看>>
Mysql 5.6 GTID-主从搭建
查看>>
Java 中的 Collection 学习笔记(1)
查看>>
趣图:IT公司员工出游真实写照
查看>>
只要觉得自己幸福就好
查看>>
执行下载远程文件的一段代吗
查看>>
PowerShell因为在此系统中禁止执行脚本的解决方法
查看>>
我的友情链接
查看>>
python入门(十) -- 面向对象
查看>>
ruby使用UDPSocket的recvfrom方法,通信变得很慢
查看>>