繁体   English   中英

闭包问题 - 调用从封闭函数返回的函数的 JavaScript 语句是什么?

Closure Question - What is the JavaScript statement to call a function that is returned from an enclosing function?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

这是我第一次使用如下所示的闭包,但我想尝试从另一个代码位置调用myFunction() 调用从标记为handleMouseDown()的封闭函数返回的匿名函数表达式需要什么 JS 语句? 当前,没有在绑定到 mouseDown 的选择下拉列表上的 mouseDown 事件上调用 handleMouseDown()。

function handleMouseDown(whichDropDown) {
            if (typeof mouseDownCount === 'undefined')
                mouseDownCount = 0;
            return function(whichDropDown, mouseDownCount) {
                switch (mouseDownCount) {
                    case 0:
                        mouseDownCount++;
                        break;
                    case 1:
                        mouseDownCount++;
                        myFunction(whichDropDown);
                        break;
                }
                return mouseDownCount;
            }
        }
1 个回复

鉴于您的代码,调用myFunction所需的唯一事情看起来是将1作为参数传递给从handleMouseDown返回的回调:

 const myFunction = arg => console.log('myFunction called with', arg); function handleMouseDown(whichDropDown) { if (typeof mouseDownCount === 'undefined') mouseDownCount = 0; return function(whichDropDown, mouseDownCount) { switch (mouseDownCount) { case 0: mouseDownCount++; break; case 1: mouseDownCount++; myFunction(whichDropDown); break; } return mouseDownCount; } } const callback = handleMouseDown('someDropdown'); callback('foo', 1);

请记住,您似乎有两个单独的mouseDownCount绑定——一个看起来是外部或全局变量(未声明),另一个是传递给回调的第二个参数。 我不完全确定您要在那里实现什么,但请确保您了解其中的区别,它可能是错误的简单来源。

如果您只想在第二次单击元素时调用某些内容,那么拥有一个跟踪点击次数的变量会容易得多:

 let clickCount = 0; window.addEventListener('click', () => { console.log('click detected'); clickCount++; if (clickCount === 2) { console.log('second click'); } });

1 函数返回后调用转义闭包是什么意思? [重复]

这个问题已经在这里有了答案: 在Swift中转义闭包 5答案 我正在阅读Apple开发人员文档中转义闭包的定义。 它说:“当闭包作为参数传递给函数时,闭包被认为是对函数的转义,但是在函数返回后会被调用” 我不确定最后一部分是什么意思,“函数返回后”是什么意思 ...

3 如何从闭包调用javascript类函数

我正在开发一个没有选择器的jQuery插件。 初始化时,我实例化了一个具有功能的对象。 在这些函数中,我需要使用闭包。 在这些闭包中,我想调用我的初始对象函数。 为了更加清楚,这是代码的简化版本。 HTML myeditor.js 问题是notify(this. ...

5 JavaScript闭包返回函数

我试图学习有关javascript闭包的信息,并且遇到了以下示例: 对我来说有意义,我的问题是,为什么这不起作用? 在我看来,这应该是完全相同的事情,但也许我只是缺少明显的东西,请协助。 ...

6 通过闭包内调用的外部函数访问封闭变量

以下代码应该通过调用set.var函数来更改封闭变量some.var的值。 后者将自身称为外部函数g ,其环境更改为set.var的父环境。 但是, obj<-new.obj(); obj$set.var(); obj$get.var() obj<-new.obj(); o ...

7 JavaScript闭包:返回函数

我正在通过Douglas Crockford编写的JavaScript讲座系列进行工作。 我为他展示的“封闭”示例代码感到困惑: var digit_name = (function () { var names = ['zero', 'one', 'two', 'three' ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM