ES6----箭头函数
目录
基本语法是:
基本用法:
注意:
普通函数和箭头函数区别?
1.this指向问题
2.普通函数 arguments保存实际参数
3.箭头函数 rest参数保存实际参数
4.表现形式不同
#
基本语法是:
(参数) => {函数体}
基本用法:
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
还没有评论,来说两句吧...