博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决全局变量污染问题
阅读量:6690 次
发布时间:2019-06-25

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

      什么是污染-------->全局变量就是污染。常用的解决污染的几种方式a.函数b.对象c.命名空间d.立即函数

      函数和对象就是我们把变量放到函数或者对象里,成为局部变量,通过访问函数内的变量来获取想要得到的内容,这个就不详细解释了。

这里引入一个命名空间的例子:这样进行访问会很大程度降低污染问题了。

/*顶级 一级*/    var demo={};//根部    /*二级*/    demo.web={        sum:10,        tab:function(){}    };    demo.finance = {        sum:20,        tab:function(){}    };    /*三级*/    demo.web.default = {        sum:30    };     demo.web.product = {        sum:40    };    demo.web.account = {};     /*如何使用*/    console.log(demo.web.sum);    console.log(demo.finance.sum);    console.log(demo.web.default.sum);    console.log(demo.web.product.sum);

这里在说一下立即函数:也就是将定义和调用合二为一,不需要调用也能执行,立即函数的后面必须加分号,否则后面的立即函数会出错。

(function(){        var sum = 1;        console.log(sum);  //1    })();    (function(){        var sum = 2;        console.log(sum);  //2    })();    console.log(sum);   //sum is not defined

不过要访问立即函数中的某些变量,是访问不到的,通常通过以下三种方式访问立即函数中的变量。第一种window,第二种全局变量形式,第三种return形式。

window方式:

(function (w) {        var sum = 10;        w.sum = sum;    })(window);    console.log(sum);  //10此时sum为全局变量了
如果要访问多个立即函数中的值,那么上面的方法就不行了,会产生大量污染 以下解决方案:json
(function (w) {        var sum=10;        json = {            sum : sum,            fn:function(){                console.log("fn");            }        }        w.$ = json;    })(window);    $.fn();  //fn    console.log($.sum);  //10

 

转载于:https://www.cnblogs.com/Snow-G/p/5304304.html

你可能感兴趣的文章
Android开发人员不得不学习的JavaScript基础(一)
查看>>
阿里云在LC3大会上透露未来要做的两件事
查看>>
关于Socket,看我这几篇就够了(三)原来你是这样的Websocket
查看>>
NSHipster: NSRegularExpression 中文版
查看>>
Android 开发中不得不知道的 Tips 集合 (持续更新 ing)
查看>>
中小型公司对于Spring Cloud的选择与思考
查看>>
javascript函数全解
查看>>
报警系统QuickAlarm之报警规则的设定与加载
查看>>
资深阿里程序猿深入讲解《微服务架构在阿里的演化》
查看>>
学习笔记|AS入门(五) 高级控件篇(下)
查看>>
企业分布式微服务云SpringCloud SpringBoot mybatis (十)Spring Boot多数据源配置与使用Spring-data-jpa支持...
查看>>
【CLI】使用 Curl 下载文件实时进度条显示
查看>>
数据结构(二)LinkedList源码分析
查看>>
ES6, Angular,React和ABAP中的String Template(字符串模板)
查看>>
Android 滤镜效果和颜色通道过滤
查看>>
Ruby开发者已可通过Fog管理Microsoft Azure服务
查看>>
Visual Studio 2017 15.6发布
查看>>
如何迅速分析出系统CPU的瓶颈在哪里?
查看>>
逢宕机必谈起,多云是真火还是假热?
查看>>
Chrome和HTTPS:安全Web的征途
查看>>