国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

七個 JavaScript 實用小技巧

Lin_YT / 2810人閱讀

摘要:接下來先介紹七個馬上就能用起來的小技巧。老實講,文章所說的小技巧大部分都是新增的語法特性,,或者說已經發布好些年頭,這些特性大家可能已經非常熟識。,對象合并,不多說,大部分場景可以取代。

作者:@davidwalshblog

原文:7 Useful JavaScript Tricks

和許多其他語言一樣,JavaScript 也需要靠很多小技巧去完成各種不同的事情。有的可能早已經廣為人知,有的卻可能會讓你感到有些迷惑。接下來先介紹七個馬上就能用起來的 JavaScript 小技巧。

數組去重

完成數組去重可能比你想象中更容易:

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

這里使用到了 Set 和擴展運算符。

數組和布爾

關于如何過濾掉數組中的假值,有這樣一個簡單的技巧:

myArray
    .map(item => {
        // ...
    })
    // Get rid of bad values
    .filter(Boolean);

只需要將 Boolean 傳給 filter 函數即可過濾掉數組中的所有假值。

創建一個空對象

你可能會直接使用對象字面量 {} 去創建一個空對象,但是這個空對象仍然包含 __proto__hasOwnProperty 以及其他的對象方法。這里提供一種方式,可以創建真正的空對象:

let dict = Object.create(null);

// dict.__proto__ === "undefined"
// No object properties exist until you add them

這個對象不包含任何屬性或者方法。

對象合并

在 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",
}
*/

擴展運算符(...) 讓這項工作變得異常簡單。

函數必需參數

可以給函數設置默認參數是一項很厲害的特性,可以通過傳一個函數去檢查必需參數是否傳參:

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

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

// This will throw an error because no name is provided
hello();

// This will also throw an error
hello(undefined);

// These are good!
hello(null);
hello("David");
解構賦值別名

解構是一項非常強大的特性,但有時我們期望用其他名稱來引用這些屬性,這時可以利用使用別名的技巧:

const obj = { x: 1 };

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

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

需要避免跟已有變量產生命名沖突時非常有用。

獲取 query 參數

曾經我們必需通過正則表達式的方式去獲取 query 參數的值,但現在已經不需要了,可以使用 URLSearchParams Web API:

// Assuming "?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"
譯者說

似乎許多人仍然頗為沉迷于這種技巧性質的東西,如最前所言,大部分或許早已成為一些常識性的東西,但對于某個特定的個體而言,可能還是初次見面,多多指教的情況。老實講,文章所說的小技巧大部分都是 ES6 新增的語法特性,ES6,或者說 ES2015 已經發布好些年頭,這些特性大家可能已經非常熟識。而現在 ES 的發布方式,每年小版本更新,已經漸漸淡化版本的概念,更關心的或許是宿主環境實現了什么。

逐條細說,第一條,是流傳相當廣的一行代碼。2,Boolean 本身也是一個構造函數,不使用 new 的時候相當于進行一個 ToBoolean 轉換操作,但這條平常好像也沒有場景用到。3,使用對象字面量 {} 相當于是 Object.create(Object.prototype) ,如果不希望有太多對象方法,倒是可以試試 Object.create(null)。4,對象合并,不多說,大部分場景可以取代 Object.assign 。5,對函數參數默認值挺有意思的一種用法。6,解構賦值別名,沒什么好說的。7,URLSearchParams 這是一個新的瀏覽器的 API ,不算 JavaScript 語言的,第一次見,支持度還比較弱。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/104073.html

相關文章

  • 不會設計沒關系!看看這七個實用的網頁UI設計技巧!

    摘要:操作的層級在設計按鈕的時候必須明顯的體現出來首要操作必須明顯高對比度的背景顏色適用于這里。只有當銷毀操作是當前首要操作的時候采用高對比度的紅色背景樣式,比如彈出對話框的確認取消按鈕。 在微博看到別人轉發的這篇文章,里面的每一點都覺得非常實用,就決定翻譯一下,也算是給自己存個檔,加深一下印象。畢竟作為一個前端頁面仔,頁面UI的美化也是我們的工作,而且還會經常會被要求在頁面上加個這個或者加...

    NickZhou 評論0 收藏0
  • 7個javascript實用技巧

    摘要:每種編程語言都有一些黑魔法或者說小技巧,也不例外,大部分是借助或者瀏覽器新特性實現。下面介紹的個實用小技巧,相信其中有些你一定用過。當然不管語言如何變化,我們總能在編程中總結一些小技巧來精簡代碼。 showImg(https://segmentfault.com/img/remote/1460000018902642); 每種編程語言都有一些黑魔法或者說小技巧,JS也不例外,大部分是借...

    tinysun1234 評論0 收藏0
  • 前端文檔收集

    摘要:系列種優化頁面加載速度的方法隨筆分類中個最重要的技術點常用整理網頁性能管理詳解離線緩存簡介系列編寫高性能有趣的原生數組函數數據訪問性能優化方案實現的大排序算法一怪對象常用方法函數收集數組的操作面向對象和原型繼承中關鍵詞的優雅解釋淺談系列 H5系列 10種優化頁面加載速度的方法 隨筆分類 - HTML5 HTML5中40個最重要的技術點 常用meta整理 網頁性能管理詳解 HTML5 ...

    jsbintask 評論0 收藏0
  • 前端文檔收集

    摘要:系列種優化頁面加載速度的方法隨筆分類中個最重要的技術點常用整理網頁性能管理詳解離線緩存簡介系列編寫高性能有趣的原生數組函數數據訪問性能優化方案實現的大排序算法一怪對象常用方法函數收集數組的操作面向對象和原型繼承中關鍵詞的優雅解釋淺談系列 H5系列 10種優化頁面加載速度的方法 隨筆分類 - HTML5 HTML5中40個最重要的技術點 常用meta整理 網頁性能管理詳解 HTML5 ...

    muddyway 評論0 收藏0

發表評論

0條評論

Lin_YT

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<