ES2015新增的特性箭頭表達式,省去了關鍵詞function,文中``雙撇號和${}是Typescript的語法。以下是一些學習筆記:
1.單行箭頭表達式:
1 var foo = (arg1,arg2) => arg1 + arg2; 2 //上述表達式相當於 3 var foo = function (arg1, arg2) { return arg1 + arg2; };
2.多行箭頭表達式(必須使用{}大括號):
1 var foo = (arg1, agr2) => { 2 return arg1 + agr2; 3 } 4 5 //以上表達式相當於 6 var foo = function (arg1, arg2) { 7 return arg1 + arg2; 8 };
3.無參數:
1 var foo = () => {} 2 3 //以上表達式相當於 4 var foo = function () {}
4.一個參數(無需使用()小括號):
1 var foo = arg => { 2 return arg*arg; 3 } 4 5 //以上表達式相當於 6 var foo = function (arg) { 7 return arg*arg; 8 }
5.栗子:
1 var arr = [1,2,3,4,5]; 2 console.log(arr.filter(value => value%2 == 0)) 3 4 //以上代碼相當於 5 var arr = [1, 2, 3, 4, 5]; 6 console.log(arr.filter(function (value) { return value % 2 == 0; })); //[2,4]返回被2整除的值
6.箭頭表達式中的this關鍵字:
//(1)ES5方式(計時器中無法找到this)
1 function Foo (name:string) { 2 this.name = name; 3 setInterval(function () { 4 console.log(`name is: ${this.name}`); 5 },1000); 6 } 7 var foo = new Foo('莎士比亞'); 8 //返回name is---無法找到this.name
//(2)ES6方式(計時器中可以找到this)
1 function Foo (name:string) { 2 this.name = name; 3 setInterval(() => { 4 console.log(`name is: ${this.name}`); 5 },1000); 6 } 7 var foo = new Foo("莎士比亞"); 8 9 //name is: 莎士比亞
