Skip to content

Commit 38cd2a3

Browse files
committed
feat(es6): 新增箭头函数
0 parents  commit 38cd2a3

File tree

5 files changed

+186
-0
lines changed

5 files changed

+186
-0
lines changed

.babelrc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"presets": ["env"]
3+
}

.gitignore

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
.DS_Store
2+
node_modules
3+
/dist
4+
5+
/tests/e2e/videos/
6+
/tests/e2e/screenshots/
7+
8+
# local env files
9+
.env.local
10+
.env.*.local
11+
12+
# Log files
13+
npm-debug.log*
14+
yarn-debug.log*
15+
yarn-error.log*
16+
17+
# Editor directories and files
18+
.idea
19+
.vscode
20+
*.suo
21+
*.ntvs*
22+
*.njsproj
23+
*.sln
24+
*.sw*
25+
26+
# Lock File
27+
package-lock.json
28+
yarn.lock

package.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"scripts": {
3+
"build": "babel src --out-dir dist"
4+
},
5+
"devDependencies": {
6+
"babel-cli": "^6.24.0",
7+
"babel-preset-env": "^1.2.1"
8+
}
9+
}

src/arrowfunction.js

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

src/example.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
var double = value => value * 2;
2+
// console.log(double(3));
3+
console.log(double(2));
4+
5+
//可计算属性名
6+
//1.一个对象添加到另一个对象中,直接在对象字面量中进行内联声明
7+
var person = {
8+
code: 123,
9+
name: 'song'
10+
}
11+
var persons = {
12+
[person.code]: person
13+
}
14+
console.log(persons);
15+
16+
//2.一个函数接受一个参数,然后使用该参数构建对象
17+
18+
//ES5
19+
function getEnvelope(type,message) {
20+
var envelope = {
21+
data: {}
22+
}
23+
envelope[type] = message
24+
return envelope
25+
}
26+
27+
console.log(getEnvelope('success', '成功'));
28+
console.log(getEnvelope('error', '失败'));
29+
30+
//ES6
31+
// function getEnvelope(type,message) {
32+
// return {
33+
// data:{},
34+
// [type]:message
35+
// }
36+
// }
37+
//
38+
// console.log(getEnvelope('success', '成功'));
39+
// console.log(getEnvelope('error', '失败'));
40+
41+
42+
43+
44+
45+
46+

0 commit comments

Comments
 (0)