定义一个内嵌函数plus(),使它可以访问父函数的counter 变量
时间: 2024-09-25 13:01:49 浏览: 30
在JavaScript中,你可以使用闭包(Closure)的概念来创建一个内嵌函数,使其能够访问到外部作用域(即父函数)中的变量。闭包是指有权访问另一个函数作用域中的变量的函数。以下是一个例子:
```javascript
function outerFunction() {
let counter = 0; // 父函数的变量
function plus() { // 内嵌函数
return counter++; // 访问并修改counter
}
return plus;
}
let addOne = outerFunction(); // 将外函数返回的加一函数赋值给addOne
console.log(addOne()); // 输出1, 第一次调用时counter为0
console.log(addOne()); // 输出2, 第二次调用时counter自增为1
```
在这个例子中,`outerFunction` 定义了一个名为 `counter` 的局部变量和内部函数 `plus`。`plus` 函数可以访问到 `counter`,即使在其被调用后,`outerFunction` 已经执行完毕。每次调用 `addOne()` 时,都会增加 `counter` 的值。
相关问题
定义一个内嵌函数plus(),使它可以访问父函数的counter 变量,
在JavaScript或其他支持闭包的语言中,可以创建一个内嵌函数(也称为局部函数或内部函数)来访问外部函数(即父函数)的变量。这通常通过将变量作为参数传递给内嵌函数,或者利用JavaScript的词法作用域(Lexical Scope)让内嵌函数保留对外部变量的引用。下面是一个简单的例子:
```javascript
function outerFunction() {
let counter = 0; // 父函数的变量
function plus() { // 内嵌函数
return counter + 1;
}
return plus;
}
let innerPlus = outerFunction();
console.log(innerPlus()); // 输出:0 (假设outerFunction未被调用)
```
在这个例子中,`plus`函数可以访问到`outerFunction`中的`counter`变量,即使`outerFunction`已经执行完毕并返回了`innerPlus`函数。这是因为`plus`函数形成了一个闭包,它“捕获”了对其父作用域的引用。
阅读全文