Javascript-将函数作为参数传递

Javascript-将函数作为参数传递,javascript,function,arguments,Javascript,Function,Arguments,抱歉,我找不到一个有效的解决方案,尽管有人问了和回答了类似的问题 我有一个使用OpenModel()打开的模式,在右上角有一个关闭按钮。单击“关闭”时,我希望函数根据已传递的参数运行 function openModal(onclose){ //insert modal var modal = document.createElement('div'); body.appendChild(modal); //insert close button var

抱歉,我找不到一个有效的解决方案,尽管有人问了和回答了类似的问题

我有一个使用OpenModel()打开的模式,在右上角有一个关闭按钮。单击“关闭”时,我希望函数根据已传递的参数运行

function openModal(onclose){
    //insert modal
    var modal = document.createElement('div');
    body.appendChild(modal);

    //insert close button
    var modalClose = document.createElement('span');
    modalClose.innerHTML = 'Χ'
    modalClose.classList.add('modalClose');
    modal.appendChild(modalClose);

    //call default function on click of close button
    modalClose.addEventListener("click", closeModal);


    //call custom function on click of close button
    if(beforeclose !== undefined){
        modalClose.addEventListener("click", onclose);
}
然后我会调用类似OpenModel('refreshPage()')的东西,其中refreshPage只需单击关闭按钮即可运行


感谢您能为我提供的任何帮助-我应该说我曾尝试在addeventlistener中使用eval,它只是立即运行它,然后在单击按钮时也运行它。

Do
element.addeventlistener(onclose,function(){closeModal(refreshPage);})

然后您可以像这样设计
closeModal
函数:

function closeModal(func){
   func();
}
函数引用的形式为变量,不带
()

  • 函数foo()
    通过
    foo
  • 函数getData()
    通过
    getData
  • 功能条();const barr=bar
    通过
    bar
    barr

为什么参数中是
onclose
,而后面是
onclose
?JS区分大小写。嗯。。。在
OpenModel('refreshPage()')
中,
'refreshPage()'
是一个字符串,而不是一个函数,如果删除引号,它将立即调用该函数,因为@raina77ow出现了
()
,这只是一个错误,为了清晰起见,我修改了我的实际代码——我想这不太好用。然后遵循@KevinB advice——将函数作为函数传递,而不是作为字符串传递。