箭头函数和普通函数的区别
1.箭头函数语法上比普通函数更加简洁(ES6中每一种函数都可以使用形参赋默认值和剩余运算符)
2.箭头函数没有自己的THIS,它里面的THIS是继承函数所处上下文中的THIS(使用CALL/APPY等任何方式都无法改变THIS的指向)
3.箭头函数中没有ARGUMENTS(类数组),智能基于。。。ARG获取传递的参数集合(数组)
4.箭头函数不能被NEW执行(因为:箭头函数没有THIS也没有prototype)
function fn(x){
return function(y){
return x + y;
}
}
let fn = x => x + y;
let obj = {
name: 'obj'
}
function fn1(){
console.log(this)
}
fn1.call(obj);
let fn2 = () =>{
console.log(this);
}
fn2.call(obj);
document.body.onlcick = () =>{
//=>THIS:window 不是当前操作的BODY了
}
document.body.onclick = function(){
//=》THIS:BODY
arr.sort(function (a,b){
//=>THIS:WINDOWN 回调函数中的THIS一般都是window
return a-b;
})
}
//=>回调函数:把一个函数B作为实参传递给另外一个函数A,函数A在执行的时候,可以把传递进来的函数B去执行(执行N次,可传值,可改THIS)
function each(arr,callBack){
for (let i=0;i <arr.lenght; i++){
let flag = callBack.call(arr,arr[i],i);
//=>接受回调函数返回的结果,如果是FALSE,我们结束循环
if(flag === false){
break;
}
}
each([10,20,30,40],function (item,index){
//=>THIS:原始操作数组
if(index >1) {
return false;
}
})
}