ES6箭头函数,用=>代替function作为简单写法
let fn=function(a,b){
console.log(a+b);
};
fn(1,2);//3
let fn1=(a,b)=>{
console.log(a+b);
};
fn1(1,2);//3
箭头函数的注意点:
箭头函数 this 指向声明时所在作用域下 this 的值
let fn4=()=>{
console.log(this)
}
fn4();//window
//1. this 是静态的. this 始终指向函数声明时所在作用域下的 this 的值
function getName(){
console.log(this.name);
}
let getName2 = () => {
console.log(this.name);
}
//设置 window 对象的 name 属性
window.name = '尚硅谷';
const school = {
name: "ATGUIGU"
}
//直接调用
getName();//尚硅谷
getName2();//尚硅谷
//call 方法调用
getName.call(school);//ATGUIGU
getName2.call(school);//尚硅谷
其他注意点:
(1)如果形参只有一个,则小括号可以省略
(2) 函数体如果只有一条语句,则花括号可以省略,函数的返回值为该条语句的
执行结果
(3) 箭头函数不能作为构造函数实例化
//2. 不能作为构造实例化对象
let Person = (name, age) => {
this.name = name;
this.age = age;
}
let me = new Person('xiao',30);
console.log(me);//!!!!会报错
//正确写法:
let Person=function(name,age){
this.name=name;
this.age=age;
}
(4) 不能使用 arguments
//3. 不能使用 arguments 变量
let fn = () => {
console.log(arguments);
};
//正确写法
let fn=(...arguments)=>{
console.log(arguments)
};
fn(1,2,3);