gpt4 book ai didi

Javascript - 返回返回函数的值

转载 作者:行者123 更新时间:2023-11-29 23:20:00 25 4
gpt4 key购买 nike

我现在正在做一个主要是前端 UI 的项目。

现在我遇到了我的一个函数的问题,其中返回值是返回函数本身,而不是函数的产生。

我将首先解释预期结果:

1.) 页面上有一个菜单,当单击菜单中的一个按钮时,另一个菜单会添加到页面中,它有自己的按钮 - 我将把它称为子菜单。

2.) 单击子菜单中可用的按钮时,将创建另一个菜单并将其添加到页面其他位置的列表中。

我将解释我的代码,以及下面的问题所在:

1.) 这里是创建菜单按钮的地方:

var add = document.createElement('button');

2.) 这是我将事件监听器添加到上面的按钮的地方:

closure = (function(arrayItem) 
{
var test = function(event)
{
object.spaces.push(selectedSpace.id);
object.spaceobjects.push(selectedSpace);

var enemyPanel = addEntityPanel(roomnumber, selectedSpace.id, object, object.savelocation, true);

return enemyPanel ;
};

return test;

})(arrayItem);

add.addEventListener("click", closure, false);

出于闭包的原因,我使用了变量闭包并向其传递了一个匿名函数,这样可以通过 for 循环修改变量 arrayItem

你可能会注意到 addEntityPanel 函数,这个函数创建了我一直提到的 menu 并将其添加到列表中,它还返回一个对象,其中包含用于创建的所有 html 元素菜单 - 将其存储在变量 enemyPanel 中。

enemyPanel 从测试函数返回到变量 test 并且测试返回到变量 closure 这应该给我访问权限到在 addEntityPanel 函数中创建的对象 enemyPanel;然而,返回的只是作为字符串的函数本身。我试图改变:

return test;

return test();

但是所有这一切只是在创建子菜单中的按钮时执行函数。我只希望它在单击按钮时执行。

我对闭包不太熟悉,所以如果闭包函数有问题阻止它生成所需的输出 - 我不会感到惊讶。

我愿意接受任何和所有的建议。请告诉我你们的想法,谢谢!

最佳答案

...enemyPanel from the test function is returned to the variable test...

不,不是。您将函数本身分配给变量 test,而不是调用它的结果。

有两个问题:

  1. 您向 addEventListener 传递了错误的函数。应该是testclosure创建的函数,不是closure

    add.addEventListener("click", test, false);
  2. 您正在从事件处理程序返回 enemyPanel。通过 addEventListener 添加的事件处理程序的返回值 is completely ignored .¹ 你不能返回 enemyPanel 到任何东西。您可以创建它,将它分配给该函数范围内的变量,将它添加到列表等,但您不能从事件处理程序中的任何地方返回它。


¹ 这是我贫血的小博客上的帖子。

关于Javascript - 返回返回函数的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51065982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com