如何在Javascript中从另一个函数调用函数?

如何在Javascript中从另一个函数调用函数?,javascript,Javascript,我有一个非工作代码。我认为它只需要一点mods,应该可以正常工作。我想不出来。刚开始学习JS var add = function (a, b) { if (typeof a !== 'number' || typeof b !== 'number') { throw { name: 'TypeError', message: 'add needs numbers' } } return a

我有一个非工作代码。我认为它只需要一点mods,应该可以正常工作。我想不出来。刚开始学习JS

var add = function (a, b) {
    if (typeof a !== 'number' || typeof b !== 'number') {
        throw {
            name: 'TypeError',
            message: 'add needs numbers'
        }
    }
    return a + b;
}

var try_it = function (a, b) {
    try {
        add(a, b);
    } catch (e) {
        document.writeln(e.name + ': ' + e.message);
    }
}

document.writeln(try_it(2, 7));
它不起作用。我得到“未定义”错误。但是,如果我直接调用函数add

 var add = function (a, b) {
    if (typeof a !== 'number' || typeof b !== 'number') {
        throw {
            name: 'TypeError',
            message: 'add needs numbers'
        }
    }
    return a + b;
}

var try_it = function (a, b) {
    try {
        add(a, b);
    } catch (e) {
        document.writeln(e.name + ': ' + e.message);
    }
}

document.writeln(add(2, 7));

。。。我得到了想要的结果。功能一定有问题,试试看

这是因为您的
try\u It()
没有返回值,而您的
add()
没有返回值

试着这样做:

var try_it = function (a, b) {
    var result;  // storage for the result of add()
    try {
        result = add(a, b); // store the value that was returned from add()
    } catch (e) {
        document.writeln(e.name + ': ' + e.message);
    }
    return result;   // return the result
}
这将返回
add()
的结果。您得到的是未定义的
,因为这是未指定的默认返回值


编辑:将其更改为将结果存储在变量中,而不是立即返回。这样您仍然可以捕获错误。

这是因为您的
try\u It()
没有返回值,而
add()
没有返回值

试着这样做:

var try_it = function (a, b) {
    var result;  // storage for the result of add()
    try {
        result = add(a, b); // store the value that was returned from add()
    } catch (e) {
        document.writeln(e.name + ': ' + e.message);
    }
    return result;   // return the result
}
这将返回
add()
的结果。您得到的是未定义的
,因为这是未指定的默认返回值

编辑:将其更改为将结果存储在变量中,而不是立即返回。这样,您仍然可以捕获错误