资讯专栏INFORMATION COLUMN

JavaScript 使用闭包防止变量污染

yuanzhanghu / 980人阅读

摘要:在多人协作时,如果定义过多的全局变量有可能造成全局变量命名冲突,使用闭包来解决功能对变量的调用将变量写到一个独立的空间里面就是闭包里面外部内部打印形成接口将最后一个函数之后返回给函数形成一个执行函数的接口开启这个功能这样做形成了一个闭包闭包

javaScript在多人协作时,如果定义过多的全局变量 有可能造成全局变量命名冲突,使用闭包来解决功能对变量的调用 将变量写到一个独立的空间里面 就是闭包里面

 1       var name = "外部name";
 2         var init = (function(){
 3             var name = "内部name";
 4             function callName(){
 5                 console.log(name);
 6                 //打印name
 7             }
 8             return function(){
 9                 callName();
10                 //形成接口
11             }
12         }());
13         init();

将最后一个函数return之后返回给init函数形成一个执行callName()函数的接口 开启callName()这个功能 这样做形成了一个闭包 闭包的变量私有化不会污染全局变量

执行init() 打印的name与外部的name互不影响

使用这种方式也有利于实现各种操作 不污染全局变量就可以把特定的功能写到一个闭包里面去 然后留出一个接口方便启用这个功能

var name = "GlobalName";
                //全局变量

        var init = (function(){
            var name = "initName";

            function callName(){
                console.log(name);
                //打印name
            }

            return function(){
                callName();
                //形成接口
            }
        }());

        init();    // --> initName


        var initSuper = (function(){
            var name = "initSuperName";

            function callName(){
                console.log(name);
                //打印name
            }

            return function(){
                callName();
                //形成接口
            }
        }());

        initSuper(); // --> initSuperName

在执行init( )和initSuper( )时打印的name值互不影响

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/93589.html

相关文章

  • 浅谈JavaScript中的闭包

    摘要:在内部,理所当然能访问到局部变量,但当作为的返回值赋给外的全局变量时,神奇的事情发生了在全局作用域中访问到了,这就是闭包。而闭包最神奇的地方就是能在一个函数外访问函数中的局部变量,把这些变量用闭包的形式放在函数中便能避免污染。 一、闭包是什么? 《JavaScript高级程序设计》中写道:闭包是指有权访问另一个函数作用域中的变量的函数,如果用下定义的观点看,这句话就是说闭包是函数,我...

    Riddler 评论0 收藏0
  • 前端小知识--从Javascript闭包看let

    摘要:闭包会在父函数外部,改变父函数内部变量的值。立即执行函数立即执行函数,顾名思义,立即会执行的函数,即当读取到该函数,会立即执行。特性使用语句声明一个变量,该变量的范围限于声明它的块中。使用声明的变量,在声明前无法使用,否则将会导致错误。 let和闭包 之前一直模模糊糊记得,let解决了某个闭包问题,想用时又不敢肯定,今天终于遇到这个问题了,那我们就一起来分析一下,什么是let,let有...

    Kross 评论0 收藏0
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?

    摘要:大家想想怎么做什么是匿名函数自执行并如何在实际库中应用匿名函数自执行,注意,注意,只有这个名字和没有其它名字,比如封闭空间,这个是为了让大家好理解自己造的词语。 通过本节课你将学到: 1.什么是函数表达式和函数声明 2.first-class function 3.引用和复制的区别 4.函数传参是怎么回事儿 5.关于函数的this和arguments 6.什么是匿名函数自执行并如何在...

    _Suqin 评论0 收藏0
  • 前端基础问题整理-JavaScript相关

    摘要:请解释事件代理事件代理也称为事件委托,利用了事件冒泡。同源指的是协议域名端口相同,同源策略是一种安全协议。目的同源策略保证了用户的信息安全,浏览器打开多个站点时,互相之间不能利用获取对方站点的敏感信息。 请解释事件代理(event delegation) 事件代理也称为事件委托,利用了事件冒泡。例如: item1 item2 item3 当页面li增多时单...

    刘东 评论0 收藏0
  • 漫谈javascript函数式编程

    摘要:高阶函数不是的所特有的,其他编程语言也有。高阶函数面向切面编程面向切面编程这种思想在开发中比较常见,主要就是将一些与核心业务无关的功能抽离出来,比如异常处理,日志统计等。 javascript的函数式语言特性 我们知道JavaScript使一门面向对象的编程语言,但这门语言同时拥有很多函数式语言的特性。 JavaScript的设计者在设计最初就参考了LISP方言之一的Scheme,引入...

    liaorio 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<