《ES6標準入門》(四)之箭頭函式和尾遞迴

2021-08-21 06:16:38 字數 2911 閱讀 4972

var f = v => v;
var f = function

(v) ;

var f = () => 5;

// 等同於

var f = function

() ;

var sum = (num1, num2) => num1 + num2;

// 等同於

var sum = function

(num1, num2) ;

// 正常函式寫法

[1,2,3].map(function

(x) );

// 箭頭函式寫法

[1,2,3].map(x => x * x);

const numbers = (...nums) => nums;

numbers(1, 2, 3, 4, 5)

// [1,2,3,4,5]

const headandtail = (head, ...tail) => [head, tail];

headandtail(1, 2, 3, 4, 5)

// [1,[2,3,4,5]]

2.使用注意點

function foo() , 100);

}var id = 21;

foo.call();

// id: 42

上面的**中,settimeout的引數是乙個箭頭函式,100ms後執行,如果是普通函式,執行時this應該指向全域性物件,但是箭頭函式導致this總是指向函式所在的物件

除了this,以下三個變數在箭頭函式中也是不存在的,分別指向外層函式的對應變數:

arguments、super和new.target

3 巢狀的箭頭函式

function

insert

(value) };

}};}insert(2).into([1, 3]).after(1); //[1, 2, 3]

let insert = (value) => (})});

insert(2).into([1, 3]).after(1); //[1, 2, 3]

4.1什麼是尾呼叫

function

f(x)

// 情況一

function

f(x)

// 情況二

function

f(x)

// 情況三

function

f(x)

function

f(x)

function

f(x)

return n(x);

}

function

f()

f();

// 等同於

function

f()

f();

// 等同於

g(3);

function

addone

(a) return inner(a);

}

function

factorial

(n)

factorial(5) // 120

function

factorial

(n, total)

factorial(5, 1) // 120

function

fibonacci

(n) ;

return fibonacci(n - 1) + fibonacci(n - 2);

}fibonacci(10) // 89

fibonacci(100) // 堆疊溢位

fibonacci(500) // 堆疊溢位

function

fibonacci2

(n , ac1 = 1 , ac2 = 1) ;

return fibonacci2 (n - 1, ac2, ac1 + ac2);

}fibonacci2(100) // 573147844013817200000

fibonacci2(1000) // 7.0330367711422765e+208

fibonacci2(10000) // infinity

function

tailfactorial

(n, total)

function

factorial

(n)

factorial(5) // 120

function

currying

(fn, n) ;

}function

tailfactorial

(n, total)

const factorial = currying(tailfactorial, 1);

factorial(5) // 120

function

factorial

(n, total = 1)

factorial(5) // 120

ES6標準入門之Generator函式(基礎篇)

從語法上來講,可以將它理解成狀態機,封裝了多個內部狀態。generator函式是es6提供的一種非同步程式設計解決方案,語法與傳統函式完全不同。執行generator函式會返回乙個遍歷器物件。返回的遍歷器物件可以依次遍歷generator函式內部的每乙個狀態。function generator v...

ES6標準之箭頭函式

具有乙個引數的簡單函式 var single a a single hello,world hello,world 沒有引數的需要用在箭頭前加上小括號 var log 多個引數需要用到小括號,引數間逗號間隔,例如兩個數字相加 var add a,b a b add 3,8 11 函式體多條語句需要用...

《ES6標準入門》(一)let和const

一 let命令 1 let的作用域只在 塊內,塊外無效 var全域性有效 var a for var i 0 i 10 i a 6 對於這段 變數i是var宣告的,在全域性範圍內有效,所以每一次迴圈,新的i值都會覆蓋舊值,導致最後輸出的是最後一輪的i值 如果使用let,宣告的變數僅在塊級作用域內有效...