2010-09-18 116 views
1

我有一个非工作代码。我认为它只需要一些小模块,它应该工作。我无法弄清楚。刚开始学习JS。如何从Javascript中的另一个函数调用一个函数?

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

回答

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,因为这是一个默认的返回值,当没有指定。

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

+0

下面是Patrick说的一个例子:http://jsfiddle.net/2c2nt/ – Tudorizer 2010-09-18 17:10:18

相关问题