原创 JavaScript 柯里化

一、什麼是柯里化 Currying ——只傳遞給函數一部分參數來進行調用,並讓它返回一個函數去處理剩下的參數。 柯里化即 Currying,是一門編譯原理層面的技術,用途是實現多參函數,其爲實現多參函數提供了一個遞歸降解的實現思路——把

原创 css 選擇器匹配以某個字符開頭或結尾

1、匹配以某字符串開頭的 ID div: [id^= "item-" ] { color: red; } <div id="item-op"></div> 可匹配到 div 中 id爲 item- 開頭的元素 2、匹配以某字符串結尾

原创 JavaScript 可選鏈(optional chaining)

可選鏈 可選鏈(Optional chaining) ?. 是一種以安全的方式去訪問嵌套的對象屬性,即使某個屬性根本就不存在。 這是一項新的提案,老舊瀏覽器可能需要 polyfills。 一、解決的問題: 1、問題一 如果用戶信息中,地址是

原创 談談 JavaScript 純函數

一、什麼是純函數 純函數,即相同的輸入,永遠會得到相同的輸出,而且沒有任何可觀察的副作用。 比如 slice 和 splice,這兩個函數的作用並無二致——但它們各自的方式卻大不同。 其中,slice 符合純函數的定義,因爲對相同的輸入

原创 JS 設計模式之原型模式(創建型)

原型模式——談 Prototype 無小事 原型模式不僅是一種設計模式,它還是一種編程範式(programming paradigm),是 JavaScript 面向對象系統實現的根基。 在原型模式下,當我們想要創建一個對象時,會先找到一個

原创 深入學習 Redux 之中間件與異步操作

上一節,學習了 Redux 的基本用法:用戶發出 Action,Reducer 函數算出新的 State,View 重新渲染。 但有一個關鍵問題沒有解決:異步操作怎麼辦?Action 發出以後,Reducer 立即算出 State,這是同步

原创 深入學習 Redux 之基礎用法

一、設計思想 ① Web 應用是一個狀態機,視圖與狀態是一一對應的。 ② 所有的狀態,保存在一個對象裏面。 二、基本概念和 API 1、Store Store 是保存數據的地方,可以把它看成一個容器。整個應用只能有一個 Store。 Red

原创 深入理解 React setState

一、爲什麼使用 setState React 修改 state 方法有兩種: 1、構造函數裏修改 state ,只需要直接操作 this.state 即可, 如果在構造函數裏執行了異步操作,就需要調用 setState 來觸發重新渲染。 2

原创 React 函數組件和類組件的區別

函數組件和類組件有什麼不同,在編碼過程中應該如何選擇呢? 一、什麼是函數組件 定義一個組件最簡單的方式就是使用 JavaScript 函數: import React from 'react' const Welcome = (props)

原创 tsconfig.json 編譯器配置大全

一般來說,項目的 TS 編譯器配置全部存儲在項目根目錄下的 tsconfig.json 文件中 當編譯器啓動時,首先會讀取 tsconfig.json,以獲取有關如何編譯項目的說明(例如,要編譯哪些源文件,在哪裏存儲輸出等) 下面介紹常見

原创 React TS 解決不聲明變量類型時的報錯問題

使用 TypeScript 的 React 項目中,變量如果沒有聲明任何類型,會被識別爲 any,此時編譯器會報錯,要求強制給變量聲明類型 這裏可以通過設置配置文件,使編譯器在這種情況下不報錯,從而實現 TS 和 JS 的混合編寫↓↓ 在

原创 JSX onClick 和 HTML onclick 的區別

在 JSX 中可以通過 onClick 這樣的方式給一個元素添加一個事件處理函數,當然,在 HTML 中也可以用 onclick (小寫 c),但在 HTML 中直接書寫 onclick 一直就是爲人垢病的寫法,網頁應用開發界一直倡導的是用

原创 JS 算法與數據結構之隊列

一、 什麼是隊列 隊列是一種先進先出(FIFO,First-in-first-out)的數據結構,其數據智能在隊尾插入,在隊首刪除。 可以將隊列想象成在食堂排隊的人羣,排在最前面的人第一個打飯,後面來的人只能在隊尾排隊,直到輪到他們爲止。

原创 深入理解 ES6 Proxy

Proxy ES6 標準中新增——Proxy(代理),只要有 “代理” 的訴求都可以考慮使用 Proxy 來實現,例如自定義一些常用行爲如查找、賦值、枚舉、函數調用等。 代理類似租房找中介,而中介可以屏蔽原始信息。 一、Basic Sy

原创 深入理解 ES6 Generator

一、什麼是 Generator Generator 用來控制循環流程,主要解決異步編程嵌套層級較深的問題。 二、ES6 如何讓遍歷“停”下來 ES5 中循環一旦執行則無法停下 function loop() { for (let i =