前端知识点理解

来源:互联网 发布:网络淘宝兼职可信吗 编辑:程序博客网 时间:2024/06/09 17:19

一. 闭包

(1)定义
简单来说,假设函数A在函数B的内部进行定义了,并且当函数A在执行时,访问了函数B内部的变量对象,那么B就是一个闭包。

(2)应用
a. 延迟调用函数(定时函数,onclick函数等)

function test(){    for(var i=1; i<=5; i++){          var timer = function timer(){                console.log("i: " + i);          };          setTimeout(timer,i*1000);    }    }      test();     

输出为6,6,6,6,6

通过使用闭包,可输出1,2,3,4,5

function test(){     for(var i=1; i<=5; i++){          var timer = (function timer(i){                console.log("i: " + i);          })(i);          setTimeout(timer,i*1000);     }    }       test();        

b.柯里化
在计算机科学中,柯里化(英语:Currying),又译为卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。

闭包的我们之前已经接触到,先说说柯里化。柯里化就是预先将函数的某些参数传入,得到一个简单的函数,但是预先传入的参数被保存在闭包中,因此会有一些奇特的特性。

var adder = function(num){    return function(y){        return num + y;    }}var inc = adder(1);var dec = adder(-1); 

inc/dec 两个变量事实上是两个新的函数,可以通过括号来调用,比如下例中的用法:

//inc, dec现在是两个新的函数,作用是将传入的参数值(+/-)1print(inc(99));//100print(dec(101));//100print(adder(100)(2));//102print(adder(2)(100));//102

c.模块

var module1 = (function(){    var _count = 0;    var m1 = function(){      //...    };    var m2 = function(){      //...    };    return {      m1 : m1,      m2 : m2    };  })();

javascript模块化

0 0
原创粉丝点击