箭头函数与普通函数的区别就会说到this的指向问题 接下来进入正题
JS中的this指向
1,浏览器里 在全局的范围内 this 指向window对象 如果没有调用的话this也指向window 对象
2,在函数中 this永远指向最后调用他的那个对象
3,构造函数中 this指向new出来的那个新的对象
4,call apply bind 中的this被强行绑定在指定的那个对象上
这就又要说一下 call apply bind
bind 返回一个改变this指向之后的新的方法,需要手动调用
call 改变this指向 直接执行 后面自由传参
apply 改变this指向 直接执行 后面跟数组
箭头函数中的this指向
箭头函数中的this指向比较特殊 箭头函数的this指向是静态的 在声明的时候就已经确定了 指向父级的上下文 而且还不会被call apply bind 三者改变this指向 但是可以正常传参
箭头函数与普通函数的区别
1,箭头函数的this不会在调用的时候被改变 因为箭头函数在声明的时候就已经确定下来了 指向父级上下文
2,箭头函数是匿名函数 不能作为构造函数使用 也不能使用new
3,箭头函数还没有原形属性
4,箭头函数内部没有arguments属性 可以用展开运算符...来解决
5,箭头函数也不能通过call() apply() bind() 方法修改箭头函数的this指向 但是可以正常传参
普通函数的arguments和类数组转换成数组
箭头函数
let fn = (...args)=>{
// console.log(arguments);//这里会报错因为箭头函数里面arguments属性 arguments is not defined
console.log(args);
}
fn(1,2,3)
普通函数
function fn(){
console.log(arguments);
}
fn(1,2,3)