首頁  >  文章  >  web前端  >  試...捕捉 V/s 安全分配 (?=):現代發展的福音還是詛咒?

試...捕捉 V/s 安全分配 (?=):現代發展的福音還是詛咒?

WBOY
WBOY原創
2024-08-26 21:33:32884瀏覽

Try...Catch V/s Safe Assignment (?=): A Boon or a Curse for Modern Development?

最近,我發現了 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 大約是它的兩倍。

那麼,你覺得怎麼樣?安全賦值運算子是否可以節省時間,或者是否會增加不必要的複雜度?

以上是試...捕捉 V/s 安全分配 (?=):現代發展的福音還是詛咒?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn