Javascript Closure范围返回函数

问题描述 投票:0回答:1

我目前正在查看本页第二个问题的第二个解决方案,

https://www.sitepoint.com/5-javascript-interview-exercises/

我被困了为什么你需要关闭。

function handlerWrapper(i) {
   return function() {
      console.log('You clicked element #' + i);
   }
}

为什么我需要返回功能。当我尝试

function handlerWrapper(i) {

     console.log('You clicked element #' + i);

}

它不起作用。究竟包括什么呢?

console.log('You clicked element #' + i);

在返回功能内吗?为什么它可以工作,为什么我需要在返回函数中执行它?

提前谢谢你

javascript web scope closures lexical-scope
1个回答
1
投票

嗯,这很简单,让我们说:

function printToConsole(callback) {
    workOrSomething();
    callback();
}

function handlerWrapper(i) {
     console.log('You clicked element #' + i);
}

//This doesn't know what i you want.
printToConsole(handleWrapper); -> You clicked element #undefined

function handlerWrapper(i) {
    return function() {
        console.log('You clicked element #' + i);
    }
}

//This does
printToConsole(handleWrapper(3)); -> You clicked element #3

我希望你有这个主意......

© www.soinside.com 2019 - 2024. All rights reserved.