/*
* 箭头函数 ArrowFunction
*/
function sum() {
return x + y;
};
// const sum=(x,y)=>{
// return x+y;
// };
// 如果函数体中只有一句话,而是return啥啥,则可以省略大括号和return
// const sum =(x,y)=>x+y;
// 如果只有一个形参可以省略,可以省略小括号
// const sum = x => x+10;
/* function fn(x) {
return function (y) {
return x + y;
}
}
const fn = x => y => x + y;
console.log(fn(10)(20)); */
/*
// ============= 箭头函数没有arguments,但是可以使用ES6中的剩余运算符来获取实参集合
const fn = (...params) => {
// console.log(arguments);//Uncaught ReferenceError: arguments is not defined
console.log(params);//[10, 20, 30]
// console.log(x,params);//10 [20, 30]
// @1 arguments如果存在,获取的集合也是类数组集合,不能直接使用数组的方法
// @2 params获取的是数组集合,可以直接使用数组的方法的
};
fn(10, 20, 30); */
// ========箭头函数中没有自己的THIS,函数中出现的THIS是其上级上下文的THIS
/* let obj ={
name:'zhufeng',
// 等价于"fn:function(){}",ES6新语法规范
fn(){
// this->obj
let self=this;
setTimeout(function(){
// this->obj 对于普通回调函数"匿名函数"来说,一般方法中的this都是window,除非在触发回调函数执行的时候,我们自己(或者浏览器)做过一些特殊处理,更改过其this...
console.log(this.name);
},1000);
}
};
obj.fn(); */
/* let obj ={
name:'zhufeng',
fn(){
// this->obj
setTimeout(()=>{
//this->没有,用的是上级上下文中的
console.log(this.name);
},1000);
}
};
obj.fn(); */
/*
// 好用但是不要乱用
let obj ={
name:'zhufeng',
fn:()=>{
// this-> 没有,用的是全局上下文的this:'window'
console.log(this.name);
}
};
obj.fn(); */
// ========箭头函数没有prototype属性,所以不能被new执行