JavaScript理解笔记——高阶函数之闭包、立即执行函数(一)

返回闭包时,不要引用循环变量,或后续会发生变化的变量。
若闭包一定要引用循环变量,必须与立即执行函数配合使用。

闭包:
将函数作为返回值:
function sun(array){
	var sum=function(){
		return array.reduce(function(x,y){return x+y;});
	}
	 return sum;
}
console.log(     sun([1,2,3,4,5])        );    //结果为[Function: sum]
调用返回的函数时,结果才为  15:
console.log(     sun([1,2,3,4,5])()      );



立即执行函数:
在闭包基础上,在创建一个函数【嵌套函数,格式为:  (function(参数){})(循环变量)       】,用此函数的参数绑定 循环变量当前的值,参数的值执行到循环变量的值时,会终止。
注:理论上【function (x) { return x * x } (3);】可以这么写,但JavaScript语法解析会报syntaxerror错误,因此需要用()把整个函数定义括起来。

闭包功能理解:
闭包是带  状态  的函数,且状态可隐;把多参数变为单参数函数。如:
function make_pow(n) {
    			return function (x) {
       				 return Math.pow(x, n);
    				}
			}
调用:
var pow2 = make_pow(2);      //创建新函数
var pow3 = make_pow(3);	//
var pow4 = make_pow(4);	//
console.log(pow2(5)); // 25
console.log(pow3(7)); // 343
console.log(pow4(2)); // 343
console.log(make_pow(3));      //      返回函数
console.log(make_pow(3)(2));		//     8















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值