成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

停止使用 `let` 或為什么它在 JavaScript/TypeScript 中是不必要的

開發 前端
在現代 JavaScript 和 TypeScript 中,let? 應該是例外而不是規則。通過默認使用 const?,你使你的代碼更可預測、更易讀、更不容易出錯。當然,有些情況下 let 是必要的,但那應該是經過深思熟慮的。

你可能已經遇到 let 關鍵字上百萬次了。它是 JavaScript(以及擴展的 TypeScript)中那些最初看起來像是救星的特性之一。

終于有了一種聲明變量的方式,可以尊重塊級作用域!var 造成提升和產生反直覺 bug 的日子一去不復返了。

但是重點來了:在 2024 年,使用 let 可能是你在代碼中做的最不必要的事情之一。

沒錯,你沒聽錯。是時候停止使用 let 了。

讓我來解釋一下為什么,什么時候應該用 const 替換它,以及在那些罕見的情況下,let 仍然在你的 TypeScript 文件中有一席之地。

let 的興衰 ??

我們回顧一下。在 ES6 之前的日子里,我們只能用 var。它是可以用的,但有深刻的缺陷。var 不尊重塊級作用域,這意味著如果你在 for 循環內聲明了一個 var,這個變量在循環外仍然可以訪問。

這引發了混亂和充滿 bug 的代碼。ES6(也就是 ECMAScript 2015)通過引入 let 和 const 改變了游戲規則。突然間,我們有了塊級作用域的變量!

不再有 var 的噩夢了!let 立即成為熱門,因為它解決了我們多年來一直在與之搏斗的問題。

但是這里有一個問題—const 是同時引入的,在大多數情況下,它可以說是更優的選擇。

為什么 const 應該是你的默認選擇 ??

我們面對現實:不可變性是王道。在我們日常編程中,我們努力編寫可預測、易于理解且沒有副作用的代碼。

這就是 const 的用武之地。當你使用 const 時,你是在告訴自己和他人這個值不會改變。

這是一個保證—一個承諾,表示這個變量不會突然在你的代碼中途取得新值。

const PI = 3.14159;
const MAX_USERS = 100;
const CONFIG = { api: 'https://api.example.com', timeout: 5000 };

這使你的代碼更易讀和維護。你可以瞥一眼用 const 聲明的變量,立即知道它的意圖:這個值是固定的。

另一方面,let 引入了不確定性。當你看到用 let 聲明的變量時,你不能確定它是否會在后面發生變化。你必須在心理上或通過工具來跟蹤它,這增加了認知負擔。

根據我的經驗,在審查代碼時,我經常看到用 let 聲明的變量很容易就可以是 const。似乎開發者出于習慣默認使用 let,即使他們不打算改變變量。

let 的問題 ??

let 的主要問題是它為不必要的可變性打開了大門。聲明某些東西時使用 let 太容易了,以至于后來忘記了為什么它一開始需要是可變的。

這里有一個快速示例:

let userCount = users.length;
if (someCondition) {
    userCount += 1;
}
console.log(`Total users: ${userCount}`);

在這個例子中,使用 let 可能看起來無害,但問問自己—userCount 真的需要是可變的嗎?

如果我們使用 const 并重構邏輯,代碼是否同樣清晰和功能性?

const userCount = users.length + (someCondition ? 1 : 0);
console.log(`Total users: ${userCount}`);

砰!更清晰的代碼,更少的可變性,更容易理解。

什么時候使用 let ??

那么,我們是否應該完全拋棄 let?不完全是。let 確實有合法的使用場景,盡管它們比你想象的要少得多。

  1. 循環計數器:當你需要迭代某些東西時,let 通常是必要的。for 循環就是一個很好的例子:
for (let i = 0; i < 10; i++) {
    console.log(i);
}

這里,i 需要在每次迭代中改變,所以 let 是正確的選擇。

  1. 可重新賦值的變量:如果你有一個真正需要改變其值的變量(而不僅僅是為了方便),那么 let 是合適的。
let status = 'pending';
// 一些異步操作
status = 'completed';

在這種情況下,重新賦值對邏輯至關重要。

但是這些場景比你預期的要少。通常,感覺需要 let 的地方可以重構成 const,而不失去清晰度或功能性。

更好代碼的工具和技巧 ??

想要將你的代碼提升到下一個水平?這里有一些工具和技巧,可以幫助你最小化 let 的使用,擁抱 const 的力量:

  1. 代碼檢查工具:ESLint 是你的朋友。你可以配置 ESLint 在不必要使用 let 時發出警告或甚至拋出錯誤。這會推動你在使用 let 之前三思。
  2. 重構工具:像 Prettier 或 VSCode 的內置重構工具可以幫助你快速將 let 轉換為 const(在適用的情況下)。只需右鍵點擊,看著魔法發生。
  3. 同行評審:鼓勵你的團隊在代碼審查期間質疑 let 的使用。問問:"這真的需要是可變的嗎?"這將有助于在你的團隊中灌輸不可變性的思維方式。

減少 let 聲明的高級方法 ??

如果你尋求另一種處理令人困惑的 let 聲明的方式,這個部分可能是你的救生衣。

?? 我看到的最常見的不必要 let 使用:設置初始值,然后進行變異。

這很難閱讀,因為它要求讀者在閱讀時記住初始值,并監控沿途的任何變異。

圖片圖片

解決方案:改為調用一個函數。

圖片圖片

不使用 let 并變異 formattedAddress 變量,你可以通過調用處理格式化的函數來提前返回。這消除了對可變性的需求,使你的代碼更清晰。

結論:擁抱不可變性

總結一下,在現代 JavaScript 和 TypeScript 中,let 應該是例外而不是規則。通過默認使用 const,你使你的代碼更可預測、更易讀、更不容易出錯。當然,有些情況下 let 是必要的,但那應該是經過深思熟慮的。

所以,下次當你的手指懸停在鍵盤上,準備輸入 let 時,花點時間問問自己:"我真的需要這個是可變的嗎?"很可能,答案是否定的。

責任編輯:武曉燕 來源: 大遷世界
相關推薦

2020-04-14 12:12:20

JavaScriptIIFE函數

2024-05-10 12:29:30

接口類型

2020-10-23 09:57:23

TypeScriptany代碼

2020-07-10 15:03:08

緩存架構計算

2018-08-24 11:52:15

成本公共云云服務

2023-05-04 07:06:25

微軟Windows

2024-01-05 07:41:08

Go語言語句

2011-08-18 09:51:21

2010-05-21 14:09:41

2015-11-25 13:37:52

磁盤空間LinuxUbuntu

2020-12-18 10:01:11

GitHub開源Cookies

2011-08-18 09:46:01

2011-08-10 11:12:03

2016-08-05 16:13:50

Android性能優化對象

2011-02-18 11:02:28

2010-05-20 17:36:09

IIS安全

2017-06-26 09:55:31

前端后端開發

2011-04-18 14:35:53

2011-04-18 14:27:50

2009-11-26 09:52:05

jQuery選擇器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91亚洲精品国偷拍自产在线观看 | 欧美日本在线 | 欧美国产精品 | 亚洲国产精品激情在线观看 | 91视频正在播放 | 精品久久久久国产免费第一页 | 亚洲视频自拍 | 欧美v免费| 久久久久网站 | 成人黄色三级毛片 | 最近中文字幕第一页 | 日韩在线h | 国产精品高潮呻吟久久av黑人 | 高清视频一区二区三区 | 国产精品一码二码三码在线 | 成人在线小视频 | 五月婷婷亚洲 | 久久久青草婷婷精品综合日韩 | 91国产视频在线 | 久久国产精品免费一区二区三区 | 青青草一区二区 | 国产美女在线观看 | 中文字幕国产精品 | 国产91色在线 | 亚洲 | 亚洲传媒在线 | 亚洲丝袜天堂 | 日韩一区二区福利 | 男女午夜免费视频 | 午夜在线精品 | 一级黄色片一级黄色片 | 日韩欧美在线视频 | 国色天香成人网 | 亚洲国产欧美一区二区三区久久 | 久久综合激情 | 成人在线一区二区 | 欧美日韩中 | 国内精品视频在线 | 国产伦精品一区二区三区高清 | 日韩精品一区二区三区中文字幕 | 中文字幕一区在线观看视频 | 国产精品美女视频 |