gpt4 book ai didi

javascript - 为什么 JavaScript try/finally block 会导致函数明显返回两次?

转载 作者:行者123 更新时间:2023-11-30 07:19:34 25 4
gpt4 key购买 nike

finally block 总是最后执行,return 语句将控制权返回到调用函数的位置。当在 try/finally block 内部一起使用时,该函数似乎返回两次而不是一次,当在 if-else block 内部使用时,finally block 的返回值生效。同一个方法调用是否返回了两次?

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 而不是 catch

finally 将在 try 或 catch 之后执行。

在条件 block 中,它将返回最后评估的项目,false,并执行您的 else block 。

参见:https://www.w3schools.com/jsref/jsref_try_catch.asp

The try statement allows you to define a block of code to be tested for errors while it is being executed.

The catch statement allows you to define a block of code to be executed, if an error occurs in the try block.

The finally statement lets you execute code, after try and catch, regardless of the result.

关于javascript - 为什么 JavaScript try/finally block 会导致函数明显返回两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56065794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com