闭包是一个包裹在函数内部的函数。它可以访问和修改其外部函数作用域中的变量,并且可以在函数执行完毕后还保持对这些变量的访问。
下面是一个包含闭包的JavaScript代码示例:
function outerFunction() {
var outerVariable = 'Hello, ';
function innerFunction(name) {
var innerVariable = 'world!';
console.log(outerVariable + name + ' ' + innerVariable);
}
return innerFunction;
}
var greeting = outerFunction();
greeting('John'); // 输出:Hello, John world!
在这个示例中,outerFunction
是外部函数,innerFunction
是内部函数。innerFunction
可以访问 outerFunction
中的 outerVariable
变量,并在执行时将其与传入的参数 name
和内部变量 innerVariable
拼接并打印出来。
通过调用 outerFunction
并将返回的 innerFunction
赋值给 greeting
,我们创建了一个闭包。现在,greeting
变量持有了对 innerFunction
的引用,它仍然可以访问 outerFunction
中的变量。当我们调用 greeting('John')
时,闭包仍然能够访问 outerVariable
和 innerVariable
的值,并打印出完整的问候语。
上一篇:闭包是一种常见的解决方案,那么在平时编写代码时,我们一般都使用函数来实现闭包。但是,假如我想使用对象来实现闭包,是否还能称之为闭包呢?如果是,与使用函数实现有何区别呢?
下一篇:闭包属性后的执行