js闭包

function makeAdder(x) {
	// 参数 `x` 是一个内部变量

	// 内部函数 `add()` 使用 `x`,所以它对 `x` 拥有一个“闭包”
	function add(y) {
		return y + x;
	};

	return add;
}
// `plusOne` 得到一个指向内部函数 `add(..)` 的引用,
// `add()` 函数拥有对外部 `makeAdder(..)` 的参数 `x`
// 的闭包
var plusOne = makeAdder( 1 );

// `plusTen` 得到一个指向内部函数 `add(..)` 的引用,
// `add()` 函数拥有对外部 `makeAdder(..)` 的参数 `x`
// 的闭包
var plusTen = makeAdder( 10 );

plusOne( 3 );		// 4  <-- 1 + 3
plusOne( 41 );		// 42 <-- 1 + 41

plusTen( 13 );		// 23 <-- 10 + 13

 

你可能感兴趣的:(js)