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);
2.使用注意點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]]
上面的**中,settimeout的引數是乙個箭頭函式,100ms後執行,如果是普通函式,執行時this應該指向全域性物件,但是箭頭函式導致this總是指向函式所在的物件function foo() , 100);
}var id = 21;
foo.call();
// id: 42
除了this,以下三個變數在箭頭函式中也是不存在的,分別指向外層函式的對應變數:
arguments、super和new.target
3 巢狀的箭頭函式
function
insert
(value) };
}};}insert(2).into([1, 3]).after(1); //[1, 2, 3]
4.1什麼是尾呼叫let insert = (value) => (})});
insert(2).into([1, 3]).after(1); //[1, 2, 3]
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,宣告的變數僅在塊級作用域內有效...