首頁 > web前端 > js教程 > 為什麼 JavaScript 不亂?

為什麼 JavaScript 不亂?

Patricia Arquette
發布: 2025-01-21 04:28:13
原創
501 人瀏覽過

Por qué JavaScript no es un desorden?

它總是讓我灰心......

聽到前端開發一團糟,尤其是JavaScript「接受任何東西」並且可以以任何方式編寫而不影響最終結果的說法,讓我很惱火。

事實上,這並不完全是錯的。 JavaScript 確實允許多種方法來實現相同目標。

問題在於缺乏後端定義的設計模式。 在前端,最佳實踐是分散的,導致意見多樣化且缺乏統一性。 這種分散性使得開發和理解變得困難,尤其是對於初學者來說。 即使寫這篇文章的人也有自己的觀點。


重點...

除了沮喪之外,我想強調的是,缺乏良好實踐的證據並不意味著它們不存在。 尋求知識並至少應用設計模式的基礎知識至關重要。 在 JavaScript 中,有許多具有既定實作和模式的資源。只需花時間閱讀並理解其目的和正確使用即可。 範例:Mozilla JavaScript 文件。


一個實際的例子......

以下程式碼來自實際生產項目。雖然它可以正常工作,但它的實現可以在可讀性和性能方面得到改進。

我們將調整一些部分以符合 JavaScript 文件中的建議,使用更有效率的方法和函數。 我們將重點放在一個基本概念:數組和物件的操作。為了教育目的,程式碼被簡化。

讓我們從一個物件開始,代表從後端 API 接收的資料:

<code class="language-javascript">const storesList = [{
  activeStories: [
    {
      name: 'Starbucks',
      code: 1
    },
    {
      name: 'Duck Duck Coffe',
      code: 2
    }
  ],
  inactiveStories: [
    {
      name: 'Mac Coffe',
      code: 3
    }
  ]
}]</code>
登入後複製

我們需要添加一個“標籤”字段,前綴為“Opened”,後面跟著商店名稱。

讓我們先來看一個「不太理想」的實現,它沒有使用最好的 JavaScript 工具:

<code class="language-javascript">storesList.reduce((previous, current) => {
  current.activeStories.forEach(store => {
    previous.push({
      ...store,
      label: `Opened ${store.name}`
    })
  })

  return previous
}, [])

// resultado:
[
    {
        "name": "Starbucks",
        "code": 1,
        "label": "Opened Starbucks"
    },
    {
        "name": "Duck Duck Coffe",
        "code": 2,
        "label": "Opened Duck Duck Coffe"
    }
]</code>
登入後複製

我們查看.reduce.forEach.push,只是為了重建一個清單。 .flatMap.map 的使用不足是顯而易見的。 語法令人困惑且冗長。

讓我們來看看改進的實作:

<code class="language-javascript">storesList.flatMap((item) => {
  return item.activeStories
}).map((item) => {
  return {
    ...item,
    label: `Opened ${item.name}`
  }
})</code>
登入後複製

更簡單吧?

.flatMap 將物件陣列「展平」到單一層級:

<code class="language-javascript">[
    {
        "name": "Starbucks",
        "code": 1
    },
    {
        "name": "Duck Duck Coffe",
        "code": 2
    }
]</code>
登入後複製

然後,.map「重新映射」數組,新增「label」屬性:

<code class="language-javascript">[
    {
        "name": "Starbucks",
        "code": 1,
        "label": "Opened Starbucks"
    },
    {
        "name": "Duck Duck Coffe",
        "code": 2,
        "label": "Opened Duck Duck Coffe"
    }
]</code>
登入後複製

結論...

JavaScript 提供了編寫高品質程式碼的工具。 重要的是學習它並正確應用概念,而不是為了程式設計而編程。


閱讀推薦:

以上是為什麼 JavaScript 不亂?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板