【发布时间】:2019-05-09 18:47:36
【问题描述】:
finally 块总是最后执行,return 语句将控制权返回到函数调用的来源。当在 try/finally 块内部一起使用时,该函数似乎返回两次而不是一次,当在 if-else 块内使用时,finally 块的返回值生效。同一个方法调用会返回两次吗?
function print(value) {
console.log(value);
return value;
}
function testWrapped() {
try {
return print(true);
} finally {
return print(false);
}
}
function test() {
try {
return true;
} finally {
return false;
}
}
console.log("Result with wrapped value");
testWrapped();
console.log("Result when used inside an if statement:");
if (test()) {
console.log("true");
} else {
console.log("false");
}
以上代码产生以下输出:
Result with wrapped value
true
false
Result when used inside an if statement:
false
【问题讨论】:
-
这是我对这种行为的解释,该函数计算返回值的表达式,但在返回之前,它执行 finally 块,这是预期的行为,因为没有什么可以覆盖 finally 的效果块,最后一条语句将控制权返回给调用主体。我在正确的轨道上吗?你有什么想法?
标签: javascript node.js function return-value