6個非常實用的JavaScript小技巧

JavaScript作為一門非常靈活的語言,在開發過程中同樣的功能會有很多實現方式。有些小技巧非常好用,不僅能節省開發時間,還能提高程式碼的可讀性,穩定性。最近整理了一些JavaScript的開發小技巧,和大家一起分享。

6個非常實用的JavaScript小技巧

1。使用展開運算子。。。取代delete操作

前端開發中經常需要對非必要的欄位進行刪除,一般情況下大家會採用

delete

操作。舉個例子,需要刪除

id

屬性。

const res = { id: 101, name: ‘owen’};delete res。id;console。log(res); // { name: ‘owen’ }

這樣當然可以實現功能,但是不推薦這樣做。首先刪除物件屬性比較危險,可能導致一些莫名其妙的問題,這些問題往往會很難排查。另外修改了原物件,導致了部分資訊的丟失,如果後續需要複製物件或者恢復物件屬性會很困難。

推薦的做法是使用展開運算子

。。。

const res = { id: 101, name: ‘owen’};const {id, 。。。rest} = res;console。log(rest); // { name: ‘owen’ }

2。使用Boolean過濾陣列中false類元素

藉助建構函式

Boolean

可以將陣列中 false 類的元素過濾掉。false 類指的是在轉換為布林型後為false的值,例如:空字串,undefined,null,0,NaN。

const res = [0,3,4,‘’,true,false,null,undefined,‘test’];const filterRes = res。filter(Boolean);console。log(filterRes); // [ 3, 4, true, ‘test’ ]

3。使用物件作為函式引數

JavaScript的函式和其他語言的函式一樣,可以接收多個入參。比如下面的函式:

const func = function(name, age, sex){}

如果有一天這個函式需要新增一個新引數

id

,則需要繼續擴充套件。

const func = function(name, age, sex, id){}

為了保持相容性,引數

id

只能放到最後一位。僅新增引數還不夠安全,還需要為新增的引數設定預設值。

const func = function(name, age, sex, id = 0){}// 或者const func = function(name, age, sex, id ){ if (!id) { id = 0; }}

隨著引數的不斷擴充套件,需要處理的相容性問題越來越多。因此推薦的做法是使用物件作為引數,還是使用上面的例子,如果使用物件作為引數,函式引數就不需要修改。

const func = function(params){ const { name, age, sex, id } = params;}func({id:10})

藉助物件的靈活性,引數的順序,個數,增減等都非常方便,對專案的影響也最小。

4。使用閱讀友好的方式表示數字

在開發中有時候會使用較大數值的常量,比如:億 - 100000000,一天的毫秒數:86400000,等等。這樣較大的數可讀性比較差,很難數清楚一共多少個零,更不清楚具體的數值了。

const num = 100000000; // 1億const ms = 86400000; // 一天內的毫秒數

推薦使用另一種可讀性好的方式表示數值:

const num = 100_000_000; // 1億// 或者const num = 1e8; // 1億const ms = 24 * 60 * 60 * 1000; // 一天內的毫秒數

這樣的寫法大大提高了程式碼的可讀性,而且對程式碼的執行沒有任何影響。

5。使用set進行陣列去重

Set

是 ES6 新增的一種資料型別,它的一大特點就是內部沒有重複元素。我們可以利用這一特點對陣列進行去重。

const arr = [1,2,3,4,3,2,1];const result = [。。。 new Set(arr)];console。log(result); // [ 1, 2, 3, 4 ]

除了使用展開運算子之外,還可以使用

Array。from

const arr = [1,2,3,4,3,2,1];const result = Array。from(new Set(arr));console。log(result); // [ 1, 2, 3, 4 ]

6。日期格式化自動補0的小技巧

我們在處理日期展示的時候經常需要將時間戳轉換為格式化的日期,比較省力的方法是直接使用日期格式化的包,比如:moment。js。但是有時候你不想因為這個小需求引入一個包,或者你想用原生JavaScript實現格式化。可能的實現是這樣的:

const date = new Date();const year = date。getFullYear();const month = date。getMonth() + 1;const day = date。getDate();const hour = date。getHours();const min = date。getMinutes();const ss = date。getSeconds();console。log(`${year}-${month}-${day} ${hour}:${min}:${ss}`); // 2021-8-1 10:31:45

但是這樣還不符合格式,因為月份,日期,小時,分,秒有可能是一位數字,需要在數字前補0。所以上面的程式碼還需要修改一下:

const padZero = function(num){ return num < 10 ? `0${num}` : num;}const date = new Date();const year = date。getFullYear();const month = date。getMonth() + 1;const day = date。getDate();const hour = date。getHours();const min = date。getMinutes();const ss = date。getSeconds();console。log(`${year}-${padZero(month)}-${padZero(day)} ${padZero(hour)}:${padZero(min)}:${padZero(ss)}`); // 2021-08-01 10:38:26

那除了上面的方法還有別的方式嗎?JavaScript作為一個非常靈活的語言,一定有其他的實現方式。今天就看到一個巧妙的解決辦法。

const date = new Date();const year = date。getFullYear();const month = ‘0’ + (date。getMonth() + 1);const day = ‘0’ + date。getDate();const hour = ‘0’ + date。getHours();const min = ‘0’ + date。getMinutes();const ss = ‘0’ + date。getSeconds();console。log(`${year}-${month。slice(-2)}-${day。slice(-2)} ${hour。slice(-2)}:${min。slice(-2)}:${ss。slice(-2)}`); // 2021-08-01 13:43:29

先透過統一新增字首字元“0”,然後再統一擷取後兩位字元。這樣做確實很聰明,很好的達到了格式化的目的。

如果覺得本篇文章對你有幫助,請幫忙轉發~

6個非常實用的JavaScript小技巧

歡迎點贊,評論,收藏,轉發,您的支援是我繼續創作的動力~