目录
(参数) => {函数体}
- let sayName=()=>{
- console.log(this.name);
- }
-
- 等价于
- let sayname=function(){
- console.log(this.name);
- }
1 有且只有一个参数时,小括号可以省略 。 当箭头函数没有参数或者有多个参数,要用小括号括起来。
2 当箭头函数函数体有多行语句,用 {} 包裹起来,表示代码块,当只有一行语句,并且需要返回结果时,可以省略 {} , 结果会自动返回。
3 当箭头函数要返回对象的时候,为了区分于代码块,要用 () 将对象包裹起来 。
- let person= (id,name) => ({id: id, name: name});
- person(6,"tom"); // {id: 6, name: "tom"}
4 箭头函数没有自己的this, 它的this是继承而来; 默认指向在定义它时所处的对象(宿主对象) 。
- let name='莉莉';
- let sayName=()=>{
- console.log(this.name); // undefiend {}
- // 箭头函数没有this
- // 内部this指向声明箭头函数时外部作用域中得this
- }
- let obj={
- // es6对象属性简写 当属性名和变量名一致 简写为属性名
- name
-
- // 箭头函数没有this 内部this指向声明箭头函数时外部作用域中this
- sayName:()=>{
- console.log(this.name,'111');
- }
-
- };
- obj.sayName();
-
-
- //undefined
- let name ='lili' //在当前作用域定义的name
- let name=()=>{
- console.log(this.name) //this指向当前模块 {} 当前模块并没有定义name
- }
- let obj={
- name,
- sayName(){
- return name
- }
- };
- obj.sayName()(); //执行箭头函数
-
- //undefined
- let name='明明'; //在当前作用域定义的name
- module.exports.name='莉莉'; //在当前模块定义的name
- let sayName=()=>{
- console.log(this.name);
- }
- let obj={
- name,
- sayName(){
- return sayName
- }
- }
- obj.sayName()();
- console.log(this===module.exports);
-
- //莉莉
- //true