1.今天在看高阶函数,其实currying的一个函数中,有那个arguments.callee,表示不见过,查了查。
arguments.callee 在哪一个函数中运行,它就代表哪个函数。 一般用在匿名函数中。 在匿名函数中有时会需要自己调用自己,但是由于是匿名函数,没有名子,无名可调。 这时就可以用arguments.callee来代替匿名的函数
var currying = function ( fn ) { var args = []; return function () { if( arguments.length ===0 ){ return fn.apply( this, args); }else{ [].push.apply(args, arguments); return arguments.callee; } } }; var cost = (function () { var money = 0; return function () { for( var i = 0,l = arguments.length; i < l; i++){ money += arguments[i]; } return money; } })() var cost = currying( cost ); cost(100); cost(200); cost(300); alert(cost()) //600
时间: 2024-07-30 10:18:05