自函数与闭包的记录

Posted on 2020-03-27 13:17  昭冥大人呀  阅读(159)  评论(0)    收藏  举报
//说一下JS的作用域SCOPE
            //JS只有两个作用域,全局作用域和函数作用域
            
            // https://blog.csdn.net/qappleh/article/details/80311443
            
            
            //立即执行函数表达式IIFE (Imdiately Invoked Function Expression)
            // 一,啥是自函数IIFE,就是定义完就能运行的函数
            // 自函数的几种写法
            // 1, ( function ( “ 参数 ” ) { " 函数方法 " ; } ) ( “ 给参数传的值 ” )
            var a = (function(a,b){
                return a+b
            })(1,2)
            console.log(a)
            // 2, ( function ( " 参数 " ) { “ 函数方法 ” ; } ( " 给参数传的值 " ) )
            var b = (function(a,b){return a+b}(3,4))
            console.log(b)
            // 3 
            //var c = !function(a,b){return a+b}(5,6)
            //console.log(c)
            
            //我理解的闭包,通过内部函数持有外部函数变量,这样该变量处于函数作用域中,不会污染到全局作用域的变量
            
            // 通过闭包写一个计数器,count不需要声明为全局变量
            var add = (function(){
                var count = 0
                return function(){
                    return ++count
                }
            })()
            console.log(add()) // 1
            console.log(add()) // 2
            console.log(add()) // 3
            console.log(add()) // 4
            console.log(add()) // 5
            
            // 关于释放闭包引用的变量
            
            // TODO...