闭包问题-调用从封闭函数返回的函数的JavaScript语句是什么?
这是我第一次使用闭包,如下所示,但我想尝试从另一个代码位置调用闭包问题-调用从封闭函数返回的函数的JavaScript语句是什么?,javascript,Javascript,这是我第一次使用闭包,如下所示,但我想尝试从另一个代码位置调用myFunction()。调用从标记为handleMouseDown()的封闭函数返回的匿名函数表达式需要什么JS语句?当前,未对绑定到mouseDown的select下拉列表上的mouseDown事件调用handleMouseDown() function handleMouseDown(whichDropDown) { if (typeof mouseDownCount === 'undefined')
myFunction()
。调用从标记为handleMouseDown()
的封闭函数返回的匿名函数表达式需要什么JS语句?当前,未对绑定到mouseDown的select下拉列表上的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;
}
}
给定您的代码,调用
myFunction
所需的唯一一件事似乎是将1
作为参数传递给从handleMouseDown
返回的回调:
const myFunction=arg=>console.log('myFunction用',arg调用);
函数handleMouseDown(whichDropDown){
if(mouseDownCount的类型==“未定义”)
mouseDownCount=0;
返回函数(whichDropDown、mouseDownCount){
开关(鼠标向下计数){
案例0:
mouseDownCount++;
打破
案例1:
mouseDownCount++;
myFunction(whichDropDown);
打破
}
返回mouseDownCount;
}
}
const callback=handleMouseDown('someDropdown');
回调('foo',1)代码>回调(someArg,1)
应该有效。@CertainPerformance,我可以要求一个正式的答案,以澄清这是否是唯一的方法吗?我很欣赏这种方法的暗示,谢谢。你能解释一下回调实际上在做什么,在我闭包的情况下它是如何工作的吗,因为我知道在进程完成时调用的回调?回调就是这个返回的函数:return function(whichDropDown,mouseDownCount){
调用回调只调用该函数。传递的第一个参数将是whichDropDown
。传递的第二个参数将是mouseDownCount
。由于开关取决于mouseDownCount
,因此只需传递正确的第二个参数即可调用myFunction
ve提供了一种在第二次鼠标单击时调用myFunction的方法,即当用户单击下拉选项时,如果选项值改变,则调用myFunction。