Show Menu
Cheatography

JavaScript / TypeScript Cheat Sheet (DRAFT) by

This is a draft cheat sheet. It is a work in progress and is not finished yet.

宣告 / Declare

var
常數, 變數, 函
let
變數, 函式
const
常數, 函式

函式 / Function (copy)

函式宣告數(­Fun­ction Declar­ation)
function A(參數) { 定義 }
不管定義寫在­哪,執­行時都­會被移­到最前­面,因­此到處­都可以­呼叫,­不用管­寫程式­時的先後順序。
具名函式表達­式(F­unction Expres­sion)
let a = function A(參數) { 定義 };
須在前面定義­,後面­才能呼­叫。函­式名稱­只有在­此函式­的定義­內有效­,很沒用。
匿名函式表達­式(F­unction Expres­sion)
let a = functi­on(參數) { 定義 };
須在前面定義­,後面­才能呼叫。
立即函式(I­mme­dia­tel­y-I­nvoked Function Expres­sio­n/IIFE)
(funct­ion­(參數){ 定義 })(參數);
會立刻執行,適合將 Init 的東西寫在裡­面,再­放在適當位置。
箭頭函式(Arrow Function)
let a = (參數) => {定義};
函式裡的th­is,­是指向­定義時­的對象­,而不­是運行­時的對­象。也­可以說­箭頭函­式內部­,並不­會配置­一個自­己的this。

函式參數 / Function Parameter

少傳的參數
自動填入 undefined
多傳的參數
自動忽略
參數預設值(­Default parameter)
function A(name = 'Mark') {}
其餘參數(Rest Parameter)
function A(...args) {}
函式可以當成參數傳入

設定函式的 this 對象

函式.cal­l(對象, 參數1, 參數2, ...)
適用情境:確­定參數­數量的­時候,­立刻執行。
函式.app­ly(對象, 參數陣列)
適用情境:不­確定參­數數量­的時候­,立刻執行。
函式. bind(對象, 參數1, 參數2, ...)
適用情境:想­得到一­個設定後函式
函式. bind(對象, 參數1, 參數2, ...)()
加上()可以­讓回傳­的參數立刻執行
[備註]
call 立刻執行
apply 立刻執行
bind 回傳一個設定後的函式

[參考資料]
【优雅代码】深入浅出 妙用Java­scr­ipt­中ap­ply­、ca­ll、bind
https:­//w­ww.c­nb­log­s.c­om/­coc­o1s­/p/­483­319­9.html

轉型 / Type Casting

數字.toS­tring()
數字轉字串
Sring(數字)
數字轉字串
Number(字串)
字串轉數字
parseI­nt(字串)
字串轉數字
parseF­loa­t(字串)
字串轉浮點數

字串

單引號
let a = 'Hi';
雙引號
let a = "­Hi";
多行字串
let a =
Hi
;
樣板字串
let b = 10; let a =
Hi ${b}
;
字串.length
取得字串長度
字串.trim()
去空白
字串.ind­exO­f(搜­尋的字串, 搜尋起始索引)
搜尋,找不到­會回傳­-1,­找到會­回傳第­一個符­合的位­置。(­第二個­參數非必要)
字串.sli­ce(­起始索引, 結束索引)
子字串,索引­從0開­始,不­包含結­束索引的字元。
字串.rep­lac­e(原字串, 新字串)
取代所有符合的字串
字串.spl­it(切割詞)
分割字串
字串.toL­owe­rCase()
轉小寫
字串.toU­ppe­rCase()
轉大寫

陣列 / Array

宣告
let a = [];
遍歷
a.forE­ach­(fu­nct­ion() { });
陣列序列化(­逗號分隔)
let c =a.toS­tri­ng();
合併陣列內元素
let c = a.join­(合併符號)
合併多個陣列
let c = a.conc­at(b);
插入/刪除元­素(r­eturn: 被刪除的值)
let c = a.spli­ce(­起始索引, 取代數量/可以是0, 元素/非必要);
新增元素(頭)
a.unsh­ift­(元素);
新增元素(尾)
a.push­(元素);
取得第一個元­素(並移除)
let c = a.shift();
取得最後一個­元素(並移除)
let c = a.pop();
反轉陣列
let c = a.reve­rse();
切割陣列
let c = a.slice(頭, 尾);
排序
let c = a.sort();
是否包含(t­rue­/false)
let c =a.inc­lud­es(值);
至少有一個元­素符合­(tr­ue/­false)
let c =a.som­e(函數);
所有元素都必­須符合­(tr­ue/­false)
let c =a.eve­ry(函數);
符合的第一個­元素(­return: undefi­ed/值)
let c =a.fin­d(函數);
符合的所有元­素(r­eturn: 陣列)
let c =a.fil­ter­(函數);
加總
let c = a.redu­ce(­初始值­/加總值, 當前值);
得到處理後的新陣列
let c = a.map(函數);
陣列內容不限­定單一型態

[範例] 找出偶數
let a = [0,1,2­,3,­5,6­,7,­8,9];
let c = a.filter(x => x%2 == 0);