箭头函数和普通函数有什么区别
箭头函数和普通函数的核心区别在于this绑定机制、构造函数支持、arguments对象处理及语法简洁性:箭头函数没有自己的this,而是继承定义时的上下文this,不能作为构造函数使用,且需用rest参数替代arguments对象,语法更简洁;普通函数则动态绑定this,支持构造函数和arguments对象,但语法相对冗长。
语法差异
- 普通函数:使用
function关键字定义,支持具名或匿名形式,语法较冗长。 - 箭头函数:使用
=>符号定义,仅支持匿名形式,语法更简洁(如单参数可省略括号和return)。
this绑定机制
- 普通函数:
this在运行时动态确定,指向调用对象或全局对象(如window),可通过call、apply或bind修改。 - 箭头函数:无自身
this,继承定义时上层作用域的this,绑定后不可变。 - 普通函数:可作为构造函数,通过
new创建实例,拥有prototype属性用于继承。 - 箭头函数:无
prototype属性,不能作为构造函数,使用new调用会报错。
