闭包储存了外部函数的变量和参数,因此它们可以在闭包内部使用,无论是传入参数还是不传参都会影响闭包的作用域。例如,以下代码中闭包的参数x就影响了其作用域:
function outer(x) { return function inner(y) { return x + y; } }
var add5 = outer(5); add5(3); // 8
在这个例子中,我们调用outer函数并传入参数5,它返回一个inner函数并将5作为参数x储存。此后我们将返回的函数赋给add5变量,调用它时传入参数3。在inner函数内部,x的值为5,与其传入参数无关。因此add5(3)返回了8。