带有回调函数的 Javascript 不起作用

标签 javascript

这是我的 javascript 程序,它应该在代码底部输出警报语句,但没有出现。这是为什么?

//function mean
function mean(values, callback) {
    var total = 0;
    for (var i = 0, max = values.length; i < max; i++) {
        if (typeof callback === "function") {
            total += callback(value[i]);
        } else {
            total += values[i];
        }
    }
}

var result = mean([2, 5, 7, 11, 4], function (x) {
    return 2 * x;
});

alert("The result mean is " + result + ".");

最佳答案

您需要返回total并将value更改为values

function mean(values, callback) {
    var total = 0;
    for (var i = 0, max = values.length; i < max; i++) {
        if (typeof callback === "function") {
            total += callback(values[i]);
        } else {
            total += values[i];
        }
    }
    return total;
}

var result = mean([2, 5, 7, 11, 4], function (x) {
    return 2 * x;
});

alert("The result mean is " + result + ".");

您可以将代码重写为更紧凑的方式:

function mean(values, callback) {
    callback = callback || function (x) { return x; };
    return values.reduce(function (r, a) {
        return r + callback(a);
    }, 0);
}

var result = mean([2, 5, 7, 11, 4], function (x) {
    return 2 * x;
});

alert("The result mean is " + result + ".");

关于带有回调函数的 Javascript 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36017120/

相关文章:

javascript - Ui路由器刷新问题

javascript - 为什么 TypeScript 会提示父类继承?

javascript - Electron.js : how to create a separate download webContents. 窗口 session ?

javascript - 如何将多值变量传递给 AngularJS 指令

javascript - 查看 html 节点上的所有打开事件 - Javascript

javascript - 在函数外丢失值

javascript - 如何动态生成带 Angular 多级下拉菜单?

移动网站的 Javascript 输入键按下事件替代方案

javascript - 如何使用 jQuery/普通旧式 javascript 更改元素(例如 h1 -> h2)?

javascript - 我需要在带有 ngFor angular 5 的同一个选择框中给出州和地区的详细信息