-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patharrowfunction.js
More file actions
100 lines (90 loc) · 2.49 KB
/
arrowfunction.js
File metadata and controls
100 lines (90 loc) · 2.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
// feat(es6): 新增箭头函数
//箭头函数
var example = p => {
console.log(p);
}
example(123)
//是因为在一个对象内部,this指向的是这个对象,
// 而在普通函数内部,this指向的是window对象。所以不能在普通函数里面用this来访问对象的属性
// 在对象内部定义的匿名函数的this指针也是指向window对象,而不是该对象
// var param = 'hello'
// var obj = {
// param: 'world',
// method1: function () {
// console.log(this.param);
// function f() {
// console.log(this.param);
// }
// f()
// },
// method2: function(){
// setTimeout(function () {
// console.log(this.param);
// },1000)
// }
// }
// obj.method1() //log world
// obj.method2() //浏览器 log hello; node log undefined
// var param = 'hello'
// // var obj = {
// // param: 'world',
// // method1: function () {
// // console.log(this.param);
// // var self = this
// // function f() {
// // console.log(self.param);
// // }
// // f()
// // },
// // method2: function(){
// // var self = this
// // setTimeout(function () {
// // console.log(self);
// // console.log(self.param);
// // },1000)
// // }
// // }
// // obj.method1() //log world
// // obj.method2() //浏览器 log hello; node log undefined
//箭头函数不会创建闭包
var param = 'hello'
var obj = {
param: 'world',
method1: function () {
console.log(this.param);
var f = ()=>{
console.log(this.param);
}
f()
},
method2: function(){
setTimeout(() => {
console.log(this.param);
},1000)
}
}
obj.method1() //log world
obj.method2() //浏览器 log hello; node log undefined
//箭头函数的写法
var double = (value) => {
return value * 2
}
var double = value =>{
return value * 2
}
var double = value => value * 3
console.log(double(2));
//隐式返回对象字面量 需用()包裹
var obj = () => ({modular: 'es6'})
console.log(obj());
var map = [1,2,3].map(value => ({number: value}))
console.log(map);
//箭头函数优点和用例
// 1. 箭头函数更适合简短实例
// 2. 当需要定义任何情况下词法作用域都不改变的匿名函数
// 3. 函数式编程
var result = [1,2,3,4]
.map(value => value *2)
.filter(value => value >2)
.reduce((pre,cur)=> pre + cur)
console.log(result);