js 中的 try/catch

来源:互联网 发布:950x120淘宝店招图 编辑:程序博客网 时间:2024/05/16 17:42

先看一段代码吧,觉得这个会输出多少?

function test(){
var i = “0”;
try{
i += “1”;
return i;
}
catch(e){}
finally{
i += “2”;
}
return i;
}
console.log(test());

“012”?根据java中的用法描述,finally中的代码一定会执行的?

结果

但实际结果是这样的,[黑人问号]

测试

在中间在打一个输出,会发现确实是执行了,但是为何不是我们想要的结果?

在try/catch中 当try中存在 return continue break 等语句时,会先将其返回值存储在一个局部变量中,在去执行finally中的语句,所以虽然在 finally中i确实发生了改变,但是最后返回的并不是 在finally中改变了的i值,而是储存在局部变量中的i值

原创粉丝点击