最近,我发现了 JavaScript 中引入的新安全赋值运算符 (?.=),我对它的简单性着迷。 ?
安全赋值运算符 (SAO) 是传统 try...catch 块的简写替代方案。它允许您内联捕获错误,而无需为每个操作编写显式的错误处理代码。这是一个例子:
const [error, response] ?= await fetch("https://api.example.com/data");
就是这样!就是这么简单。如果获取请求抛出错误,它会自动存储在错误常量中;否则,响应将保留结果。很酷吧?
但是等等……还有更多。
使用SAO时,您仍然需要进一步处理错误,如下所示:
async function getData() { const [requestError, response] ?= await fetch("https://api.example.com/data"); if (requestError) { handleRequestError(requestError); return; } const [parseError, json] ?= await response.json(); if (parseError) { handleParseError(parseError); return; } const [validationError, data] ?= validation.parse(json); if (validationError) { handleValidationError(validationError); return; } return data; }
虽然 SAO 简化了错误处理,但它可能会导致更冗长的代码。与传统的 try...catch 块进行比较:
async function getData() { try { const response = await fetch("https://api.example.com/data"); const json = await response.json(); const data = validation.parse(json); return data; } catch (error) { handleError(error); return; } }
在这种情况下,try...catch只需要9行代码,而SAO大约是它的两倍。
那么,你觉得呢?安全赋值运算符是否可以节省时间,或者是否会增加不必要的复杂性?
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3