javascript - 是否可以分解这些包含相似代码的函数?

标签 javascript jquery

我有两个 Javascript 函数,它们都使用 jquery-confirm ( https://craftpip.github.io/jquery-confirm/ ) 并包含非常相似的代码:

function cnf(cntn, fn) {
    $.confirm({
        title: "",
        content: cntn,
        confirmButton: "Yes",
        cancelButton: "No",
        confirm: function() { fn(); },
        cancel: function() { }
    });
}
function cnfprm(cntn, fn, prm) {
    $.confirm({
        title: "",
        content: cntn,
        confirmButton: "Yes",
        cancelButton: "No",
        confirm: function() { fn(prm); },
        cancel: function() { }
    });
}

我想知道是否可以通过创建另一个函数来封装这两个调用的相似之处来分解此代码,因此生成的代码类似于:

function cnf(cntn, fn) {
    subfn(cntn, confirm: function() { fn(); });
}
function cnfprm(cntn, fn, prm) {
    subfn(cntn, confirm: function() { fn(prm); });
}

...或者是否有另一种方法来分解代码?

最佳答案

只需使用这个功能:

function cnf( cntn, fn, optionalPrm ) {
    $.confirm({
        title: "",
        content: cntn,
        confirmButton: "Yes",
        cancelButton: "No",
        confirm: function() { fn( optionalPrm ); },
        cancel: function() { }
    });
}

当您不需要时,请将 optionalPrm 留空。由于它是未定义的,因此您的函数可能已经会忽略它无论如何。由于前两个参数相同,因此没有区别。如果第三个参数存在,那就太好了,否则,就好像它不存在一样。

关于javascript - 是否可以分解这些包含相似代码的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38898558/

相关文章:

Javascript 和 Wordpress : Functions. php 用于子主题更改 JS 文件上的值

javascript - JavaScript 对象的动态深度设置

javascript - 在 div 单击 backbone.js 中的 URLS

javascript - 仅当高于特定 div 时才调用函数

php - 无法发布和插入到数据库并回显结果 AJAX/PHP/MYSQL

javascript - 如何制作jquery插件?

javascript - 如何将(Cordova)插件与 Ionic 2/TypeScript 一起使用?

javascript - 从数组中删除 NaN

javascript - Jquery 事件不工作

jquery - 如何在一节课后将所有 sibling 包装在一个类(class)中? (jQuery)