箭头函数与普通函数的区别
语法格式 | new 和原型(prototype) | arguments super new.target | this 指向 | call,apply 和 bind | |
---|---|---|---|---|---|
普通函数 | function(){} 函数声明 函数表达式 | 有 | 有 | 动态 | 修改 this 值 |
箭头函数 | () => {} 函数表达式 | 没有 | 没有 可调用外围 | 箭头函数的 this 指向定义时,外层中第一个普通函数的 this | 箭头函数中的 this 是在箭头函数定义时就决定的,而且不可修改的(call、apply、bind) |
为什么需要箭头函数
- 消除函数二义性(函数的二义性:1,指令序列 2,构造器面向对象)
- 调用函数有两种方式:1,直接调用 比如 Date()2,通过 new 关键字调用 new Date()
- ES6 中引入了类是为了告诉使用者函数只能通过 new 调用
- 同理箭头函数就只能表达函数只有指令序列的作用,不能通过 new 调用