MST

星途 面试题库

面试题:JavaScript函数调用多样化场景下的闭包应用

假设我们有一个函数`createCounter`,它返回一个内部函数`increment`,`increment`函数每次调用时会返回一个自增的数字。请使用闭包和函数调用多样化场景的知识来实现这个功能,并解释为什么这种实现方式能达到预期效果。
18.9万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
function createCounter() {
    let count = 0;
    return function increment() {
        return ++count;
    };
}

// 解释:
// 1. `createCounter`函数内部定义了变量`count`,初始值为0。
// 2. 当`createCounter`被调用时,返回一个内部函数`increment`。
// 3. `increment`函数可以访问并修改`createCounter`函数作用域中的`count`变量,这是闭包的特性。
// 4. 每次调用`increment`函数,`count`变量会自增1,并返回自增后的值,从而实现了自增数字的功能。
def createCounter():
    count = 0
    def increment():
        nonlocal count
        count += 1
        return count
    return increment

# 解释:
# 1. `createCounter`函数内部定义了变量`count`,初始值为0。
# 2. 当`createCounter`被调用时,返回一个内部函数`increment`。
# 3. 在Python中,由于`increment`函数要修改`createCounter`函数作用域中的`count`变量,需要使用`nonlocal`关键字声明。
# 4. 每次调用`increment`函数,`count`变量会自增1,并返回自增后的值,通过闭包特性实现了自增数字的功能。