我有一个不工作的代码。我认为它只需要一些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一定有问题吗?
答案 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
因为这是未指定的默认返回值。
编辑:将其更改为将结果存储在变量中,而不是立即返回。这样你仍然可以发现错误。