まず、文法
基本的な文法
(パラメータ1、パラメータ2、...、パラメータN)=> {}関数宣言
(パラメータ1、パラメータ2、...、パラメータN) => 式(単一)
//は対応:(パラメータ1、パラメータ2、... 、パラメータN)=> {式を返す;}
// 唯一のパラメータ、括弧はオプションである場合:
(単一のパラメータ)=> {}関数宣言
、単一のパラメータ => {関数宣言}
// パラメータなしこの関数は、括弧のペアとして記述する必要があります。
()=> {}関数宣言
高度な文法
// 括弧関数は、オブジェクト本体リテラル式を返す:
パラメータ=> ({FOO:バー})
// サポート残りのパラメータとデフォルトパラメータ
(パラメータ1、パラメータ2、... REST)=> {}関数宣言
(パラメータ1 =デフォルト値1、パラメータ2、...、パラメータNのデフォルト値N =)は=> {関数宣言は}
// また、引数リストの解体がサポート
させ、F =([A、B ] = [1、2]、{X :C = {X}:A + B})=> A + B + C;
F(); // 6。
例
パラメータを持つ1.簡単な関数
VAR単一= A =>
シングル( 'こんにちは、世界')// "こんにちは、世界
2.括弧はプラス矢印前のパラメータを使用する必要はありません
たログ=()=> {
アラート( 'いいえPARAM' )
}
3.必要性は、例えば、2つの数値を括弧、コンマ間隔の間に複数のパラメータを使用します
VAR追加=(A、B)=> A + B
追加( 3,8)// 11
4.関数の本体は、複数のステートメントは、括弧を使用する必要があります
VaRの追加=(A、B)=> {
場合(typeof演算 == '番号' && typeof演算の B == '個数が' ){
返す + B
} 他{
戻り 0
}
}
中括弧は、コードブロックを占有するように解釈括弧ラップ5.戻りオブジェクトを、必要とします
VAR GETHASH = ARR => {
// ...
リターン({
名: 'ジャック' 、
年齢: 33
})
}
6.直接イベントハンドラとして
document.addEventListener('click', ev => {
console.log(ev)
})
7. 作为数组排序回调
var arr = [1, 9 , 2, 4, 3, 8].sort((a, b) => {
if (a - b > 0 ) {
return 1
} else {
return -1
}
})
arr // [1, 2, 3, 4, 8, 9]
二、注意点
1. typeof运算符和普通的function一样
var func = a => a
console.log(typeof func); // "function"
2. instanceof也返回true,表明也是Function的实例
console.log(func instanceof Function); // true
3. this固定,不再善变
obj = {
data: ['John Backus', 'John Hopcroft'],
init: function() {
document.onclick = ev => {
alert(this.data) // ['John Backus', 'John Hopcroft']
}
// 非箭头函数
// document.onclick = function(ev) {
// alert(this.data) // undefined
// }
}
}
obj.init()
4. 箭头函数不能用new
var Person = (name, age) => {
this.name = name
this.age = age
}
var p = new Person('John', 33) // error
5. 不能使用argument
var func = () => {
console.log(arguments)
}
func(55) // Uncaught ReferenceError: arguments is not defined
博客搬运地址: