zoukankan      html  css  js  c++  java
  • 闭包与非闭包

    闭包函数:闭包简单理解成"定义在一个函数内部的函数"。

    下面是一个标准的闭包函数,内部定义的函数可以读取外部函数中定义的变量  ,闭包函数须是在内部定义的函数,而不是在外部定义的。

        var test = 10;
        var f = (function (){ 
            var test = 20;
             return function (){ 
                alert("访问---"+test);//20
    } })(); f();

    变形1:

    返回一个外部定义的函数,并执行这个外部函数foo

        var test = 10;
        var f = (function (){ 
            var test = 20;
            return foo;  //10
        })();
    
        f();
        
    function foo(){
            alert('foo1:'+test);   //10
        }

    变形2:

    这个其实已经不是一个闭包,仅仅是一个函数调用,在自执行的函数里,调用了另一个函数foo,而foo是在外部定义的,是无法读取到内部函数里定义的局部变量的,所以,foo()调用时,读取的是外部定义的全局变量10

    var test = 10;
     (function (){ 
        var test = 20;
        foo();   //10
    
        })();
    
    function foo(){
            alert('foo1:'+test);   //10
        }
  • 相关阅读:
    linux基础知识-12
    linux基础知识-11
    linux基础知识-10
    安装与迁移Solo博客系统
    linux基础知识-9
    linux基础知识-8
    linux基础知识-7
    linux基础知识-6
    linux基础知识-5
    通俗解释下分布式、高并发、多线程
  • 原文地址:https://www.cnblogs.com/lydialee/p/4869472.html
Copyright © 2011-2022 走看看