JavaScript是否支持无catch的内联try语句?或简化异常赋值写法
可行的内联写法实现方案
JavaScript原生语法不支持直接把try-catch作为表达式赋值给变量,但可以通过两种方式实现类似内联的效果:
1. 使用立即执行函数表达式(IIFE)
把try-catch逻辑包裹在一个立即执行的箭头函数里,直接返回结果或默认值:
var overallProgress = (() => { try { return JSON.parse(text).overallProgress; } catch { return 0; } })();
2. 封装复用工具函数
如果需要多次用到这种“尝试执行、失败返回默认值”的逻辑,可以封装成工具函数,之后直接内联调用:
// 定义工具函数 function tryExecuteOrDefault(fn, defaultValue) { try { return fn(); } catch { return defaultValue; } } // 内联使用 var overallProgress = tryExecuteOrDefault(() => JSON.parse(text).overallProgress, 0);
为什么你之前的写法报错?
你尝试的try {JSON.parse(text)} ? 0这类写法不符合JavaScript语法规范:
try-catch是语句而非表达式,不能直接参与赋值操作- 不存在
try ... ? ...这种简化语法
内容的提问来源于stack exchange,提问作者1.21 gigawatts
相关产品推荐
相关产品推荐

