1.箭头函数是匿名函数,不能作为构造函数,不能使用new
function Fn() {
console.log(1); //1
}
let fn1 = new Fn();
普通函数可以使用new实例化
let Fn2 = () => {
console.log(1);
}
let fn3 = new Fn2();
箭头函数使用new实例化会报错。
2.普通函数有arguments,箭头函数没有arguments
function fn() {
console.log(arguments) //[1,2,3,4,5]
}
fn(1,2,3,4,5)
箭头函数使用arguments会报错,可以使用...arg来解决
let fn = () => {
console.log(arguments)
}
fn(1,2,3,4,5)
let fn = (...arg) => {
console.log(arg) //[1, 2, 3, 4, 5]
}
fn(1,2,3,4,5)
3.箭头函数没有this,会捕获上下文的this值作为自己的this值
var obj = {
name:'haha',
fn(){
console.log(this); //this指向obj
}
}
obj.fn();
var obj = {
name:'haha',
fn:() => {
console.log(this) //this指向window
}
}
obj.fn();
4.箭头函数没有原型
var a = ()=>{
return 1;
}
function b(){
return 2;
}
console.log(a.prototype); // undefined
console.log(b.prototype); // {constructor: ƒ}