7個實用的 JavaScript 小技巧(譯文)

本文為譯文,第一次嘗試翻譯英文博客,很多地方翻譯得不好。本文內容十分簡單,可直接查看英文原文,或直接看代碼部分。文章每一部分都有拓展(暫未翻譯),可點擊查看。
原文:7 Useful JavaScript Tricks
以下為譯文:
和其他編程語言一樣,JavaScript 有著許多技巧來解決一些簡單的、亦或是困難的任務。其中有大家所熟知的部分,但也有一些技巧可能超乎你的想象。現在讓我們來看一下這七個你隨即可用的 JavaScript 小技巧!

數組去重

獲取數組的唯一值可能比你想象中要簡單:

var j = [...new Set([1, 2, 3, 3])]
>> [1, 2, 3]

我超愛(...)和 Set!

數組配合布爾

要從一個數組中過濾falsy值?你或許不知道有這種技巧:

myArray
    .map(item => {
        // ... 
        // 記得 return
    })
    // 擺脫這些空值
    .filter(Boolean);

只需傳遞 Boolean 就能去除這些 falsy 值!

創建一個空的對象

當然,似乎你可以通過像 {} 這樣來創建一個空對象,但實際上這樣創建的對象還是有__proto__、hasOwnProperty 以及其他對象的方法。下面是一種創造一個純對象的方法:

let dict = Object.create(null);

// dict.__proto__ === "undefined"
// 在你添加動態屬性之前為空

這個對象上絕對沒有你沒有放入的鍵或方法!

合并對象

JavaScript 合并多個對象的需求由來已久,尤其是當我們創建帶有選項的類和小部件時:

const person = { name: 'David Walsh', gender: 'Male' };
const tools = { computer: 'Mac', editor: 'Atom' };
const attributes = { handsomeness: 'Extreme', hair: 'Brown', eyes: 'Blue' };

const summary = {...person, ...tools, ...attributes};
/*
Object {
  "computer": "Mac",
  "editor": "Atom",
  "eyes": "Blue",
  "gender": "Male",
  "hair": "Brown",
  "handsomeness": "Extreme",
  "name": "David Walsh",
}
*/

這三個點讓任務變得簡單多了!

強制函數傳參

能夠為函數參數設置默認值是 JavaScript 的一個很棒的補充。請查看這個技巧,要求為給定的參數傳遞值:

const isRequired = () => { throw new Error('param is required'); };

const hello = (name = isRequired()) => { console.log(`hello ${name}`) };

// 由于沒給 hello() 傳 name,該代碼會報錯

// 下面代碼也會報錯
hello(undefined);

// 來看看符合要求的寫法
hello(null);
hello('David');

這是某種下級驗證和 JavaScript 慣用方法!

解構別名

解構賦值是一個非常受歡迎的 JavaScript 升級,但有時我們更喜歡用其他名稱引用這些屬性,所以我們可以利用別名:

const obj = { x: 1 };

// Grabs obj.x as { x }
const { x } = obj;

// Grabs obj.x as { otherName }
const { x: otherName } = obj;

有效避免了與現有變量的命名沖突!

獲取查詢字符串參數

多年來,我們編寫了大量正則表達式來獲取查詢字符串值,但那些日子已經一去不復返了——我們擁有了令人驚嘆的 URLSearchParams API

// 假設 "?post=1234&action=edit"

var urlParams = new URLSearchParams(window.location.search);

console.log(urlParams.has('post')); // true
console.log(urlParams.get('action')); // "edit"
console.log(urlParams.getAll('action')); // ["edit"]
console.log(urlParams.toString()); // "?post=1234&action=edit"
console.log(urlParams.append('active', '1')); // "?post=1234&action=edit&active=1"

是不是比之前簡單多了。

這些年 JavaScript 已經發生了很大的變化,但我最喜歡的部分是我們現在看到 JavaScript 語言改進的速度。盡管 JavaScript 在不斷動態變化,我們仍然需要使用一些不錯的技巧;把這些技巧放在你的工具箱里,以備不時之需!

你最喜歡的 JavaScript 技巧是什么呢?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容