而是取决于的性质main.add()
。但是,通过使用回调,它很可能是异步的。如果是这种情况,那么return
根本无法正常工作,因为“异步”意味着代码不会等待result
可用。
您应该通读“如何从 AJAX 调用返回响应? ”。尽管它使用 Ajax 作为示例,但它包含对异步编程和控制流可用选项的非常透彻的解释。
您需要定义squre()
接受它自己的回调并调整调用代码以提供一个:
function squre(val, callback) {
main.add(val, function (result) {
console.log("squre = " + result);
callback(result);
});
});
squre(10, function (result) {
console.log(result);
});
但是,如果main.add()
实际上是同步的,您会想要移动return
语句。他们只能适用于function
他们直接在其中,这将是匿名的function
而不是spure()
.
function squre(val) {
var answer;
main.add(val, function (result) {
console.log("squre = " + result);
answer = result;
});
return answer;
}