4

闭包理解

闭包的两种应用情况:

  1. 函数作为返回值
function fn(){
         var max = 10;
         return function bar(x){
              if(x > max){
                   document.write(x);
              }
         };
} 
var f1 = fn();
f1(15);

bar函数作为返回值,赋值给f1变量
  1. 函数作为参数被传递
var max = 10;
fn = function(x){
              if(x > max){
                   document.write(x)
              }
       };
(function(f){
         var max = 100;
         f(15);
})(fn);

fn函数作为一个参数被传递进入另一个函数,赋值给f参数.执行f(15)时,max变量的取值是10,而不是100

浏览器的预处理

document.write(a);//默认值undefined;
var a = 10;

等价于

var a;
document.write(a);
a = 10;
document.write(f1);//function f1(){}
function f1(){}//函数声明

document.write(f2);//undefined
var f2 = function(){};//函数表达式

小例子

function a(){
        var n = 1;
        nAdd = function(){
            n += 1;
        }
        function b(){
        alert(n);
    }
        return b;
    }
    //var result = a();
    //result();
    //nAdd();
    //result();
    a()();

......

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容