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

时间:2010-09-18 16:54:16

标签: javascript

我有一个不工作的代码。我认为它只需要一些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));

它不起作用。我收到“未定义”错误。但是,如果我直接调用函数添加...

 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_it一定有问题吗?

1 个答案:

答案 0 :(得分:4)

这是因为您的try_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()的结果。您收到undefined因为这是未指定的默认返回值。

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