javascript - 为什么 `finally` 中的返回覆盖 `try` ?

标签 javascript return try-catch try-catch-finally try-finally

try/catch block 中的 return 语句如何工作?

function example() {
    try {
        return true;
    }
    finally {
        return false;
    }
}

我希望这个函数的输出是true,但它是false!

最佳答案

最后总是执行。这就是它的用途,这意味着它的返回值会在您的情况下使用。

您需要更改您的代码,使其更像这样:

function example() { 
    var returnState = false; // initialization value is really up to the design
    try { 
        returnState = true; 
    } 
    catch {
        returnState = false;
    }
    finally { 
        return returnState; 
    } 
} 

一般来说,您永远不想在一个函数中有多个 return 语句,这就是原因。

关于javascript - 为什么 `finally` 中的返回覆盖 `try` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3837994/

相关文章:

javascript - 将 Excel 公式转换为 JavaScript 计算

javascript - 无法通过 ID 访问 SVG

javascript - 如果值大于另一个表单值,则需要表单显示错误

c - 如何将数组数据包设为私有(private)并在 C 中访问它们

python - 我应该在定义函数的模块中还是在 Python 中调用函数的模块中定义 try-except?

Java Swing GUI Try/Catch block

javascript - 如何在 Windows 中使用 NodeJS 执行 After Effects JSX 脚本

c++ - 如何优雅地返回默认初始化的对象?

c# - 如何在方法之间使用 return

c++ - 在 C++ 中通过指针捕获异常