gpt4 book ai didi

javascript - 最终 block 中的return语句

转载 作者:行者123 更新时间:2023-12-03 12:22:14 29 4
gpt4 key购买 nike

MDN中指出,

If the finally block returns a value, this value becomes the return value of the entire try-catch-finally production, regardless of any return statements in the try and catch blocks:



所以我尝试执行以下代码,
function an(){
var r = try{
throw 1;
} catch(e){
console.log("Caught: %o", e);
} finally {
return 2;
}
console.log("r=%o", r);
return 3;
}

这没用。引发语法错误。
SyntaxError: syntax error

var r = try{

怎么了

最佳答案

我认为问题很简单,您正在尝试将try语句分配给变量。据我所知(而且我不是JS专家),您无法做到这一点。这是一个陈述,而不是一个表达。

我认为这与返回值所发生的情况完全分开。

尝试将try / catch / finally语句放入单独的函数中,然后调用该函数,将结果分配给r:

function foo() {
try {
throw 1;
} catch(e) {
console.log("Caught: %o", e);
} finally {
return 2;
}
}

var r = foo();
console.log("r=%o", r);

在Chrome的Javascript控制台中,它提供了:
Caught: 1
r=2

编辑:我同意文档中的术语“生产”在这里有点困惑。根据评论,它在技术上是准确的-但是,这当然不会阻止它造成混淆。我怀疑在大多数情况下,“功能”会更清晰,确切的说来可能不太准确。

关于javascript - 最终 block 中的return语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16998507/

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