作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个无效代码。我认为它只需要一点点修改,它应该可以工作。我想不通。刚开始学习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 一定有问题?
最佳答案
这是因为您的 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
,因为这是未指定时的默认返回值。
编辑:将其更改为将结果存储在变量中而不是立即返回。这样您仍然可以捕获错误。
关于javascript - 如何从 Javascript 中的另一个函数调用一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3742579/
我是一名优秀的程序员,十分优秀!