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

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

開發(fā) 前端
在現(xiàn)代 JavaScript 和 TypeScript 中,let? 應(yīng)該是例外而不是規(guī)則。通過默認(rèn)使用 const?,你使你的代碼更可預(yù)測、更易讀、更不容易出錯。當(dāng)然,有些情況下 let 是必要的,但那應(yīng)該是經(jīng)過深思熟慮的。

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

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

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

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

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

let 的興衰 ??

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

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

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

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

為什么 const 應(yīng)該是你的默認(rèn)選擇 ??

我們面對現(xiàn)實:不可變性是王道。在我們?nèi)粘>幊讨校覀兣帉懣深A(yù)測、易于理解且沒有副作用的代碼。

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

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

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

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

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

根據(jù)我的經(jīng)驗,在審查代碼時,我經(jīng)常看到用 let 聲明的變量很容易就可以是 const。似乎開發(fā)者出于習(xí)慣默認(rèn)使用 let,即使他們不打算改變變量。

let 的問題 ??

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

這里有一個快速示例:

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

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

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

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

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

什么時候使用 let ??

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

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

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

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

在這種情況下,重新賦值對邏輯至關(guān)重要。

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

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

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

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

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

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

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

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

圖片圖片

解決方案:改為調(diào)用一個函數(shù)。

圖片圖片

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

結(jié)論:擁抱不可變性

總結(jié)一下,在現(xiàn)代 JavaScript 和 TypeScript 中,let 應(yīng)該是例外而不是規(guī)則。通過默認(rèn)使用 const,你使你的代碼更可預(yù)測、更易讀、更不容易出錯。當(dāng)然,有些情況下 let 是必要的,但那應(yīng)該是經(jīng)過深思熟慮的。

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

責(zé)任編輯:武曉燕 來源: 大遷世界
相關(guān)推薦

2020-04-14 12:12:20

JavaScriptIIFE函數(shù)

2024-05-10 12:29:30

接口類型

2020-10-23 09:57:23

TypeScriptany代碼

2020-07-10 15:03:08

緩存架構(gòu)計算

2018-08-24 11:52:15

成本公共云云服務(wù)

2024-01-05 07:41:08

Go語言語句

2023-05-04 07:06:25

微軟Windows

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性能優(yōu)化對象

2011-02-18 11:02:28

2010-05-20 17:36:09

IIS安全

2017-06-26 09:55:31

前端后端開發(fā)

2011-04-18 14:35:53

2011-04-18 14:27:50

2009-11-26 09:52:05

jQuery選擇器
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久久久久一区 | 久久成人一区 | 中文字幕成人在线 | 一级毛片色一级 | 日韩精品一区二区三区久久 | 99久久精品国产麻豆演员表 | 亚洲国产精品一区 | 日韩欧美二区 | 欧美一级www片免费观看 | 啪啪网页 | 国产一区二区影院 | 日韩激情在线 | 一区二区三区在线 | 欧 | 日韩欧美国产精品 | 国产精品久久久久影院色老大 | 91久久精品一区二区二区 | 欧美色综合 | 日韩精品一区二区三区中文在线 | 国产精品一区二区三 | 亚洲视频免费观看 | 欧美高清性xxxxhd | 在线观看国产wwwa级羞羞视频 | 欧美日韩一区二区三区不卡视频 | 欧美 日韩精品 | 天天综合久久网 | 国产一区二区三区四区 | 九九精品久久久 | 欧美jizzhd精品欧美巨大免费 | 国产精品美女久久久久久久久久久 | 亚洲 欧美 另类 综合 偷拍 | 天天综合干 | 99视频在线 | 国产精品国产三级国产aⅴ无密码 | 99久久国产 | 精品1区| 午夜影院在线 | 欧美成人免费在线视频 | 午夜精品久久久久久久星辰影院 | 久久精品国产免费 | 成人h片在线观看 | 99久久精品免费看国产小宝寻花 |