- 普通函数 function(){}
- 箭头函数()=>{}
- 共同点(){},()里面一般用来放置参数,{}一般用来放置函数体
箭头函数与普通函数的区别在于:
1.箭头函数没有 this,需要通过查找作用域链来确定 this 的值,如果箭头函数被非箭头函数包含,this 绑定的就是最近一层非箭头函数的 this,
2.箭头函数没有自己的 arguments 对象,但是可以访问外围函数的 arguments 对象
3.箭头函数不能通过 new 关键字调用,不会自动生成prototype属性
4.箭头函数是函数表达式,而且是匿名的。普通函数可以是函数表达式,也可以是函数声明.
1.箭头函数写法
1.只有一个参数的时候不需要为参数加(),只有一个表达式时候也不需要加{},
箭头函数会自动返回处理结果
箭头函数比较简单明了
2.箭头函数不能用new关键字调用箭头函数,所以也不需要构造函数原型了。也就是不会自动生成prototype属性
箭头函数创建的时候,程序不会为箭头函数创建construct方法==>无构造能力
3. 箭头函数没有自己的 arguments 对象,但是可以访问外围函数的 arguments 对象
函数内部有一个特殊对象arguments,类似于数组的对象,在给函数传入参数的时候就可以像数组一样调用数组的元素或者属性
箭头函数没有自己的arguments对象,匿名函数一般不用参数或者限定参数来执行,普通函数需要复用
访问外围函数的 arguments 对象
创建一个普通函数,里面返回的是一个箭头函数,箭头函数再返回arguments的长度
定义一个变量,保存函数输入的参数,当执行 arrow表达式就相当于执行normal(1,2,3)()。
普通函数返回了一个箭头函数,用一个括号来执行箭头函数,因为作用域链的关系箭头函数保存了arguments的长度,最后返回了结果,=其实就是闭包
4.箭头函数没有 this,所以需要通过查找作用域链来确定 this 的值,这就意味着如果箭 头函数被非箭头函数包含,this 绑定的就是最近一层非箭头函数的 this
// 创建普通函数和箭头函数表达式,为两个按钮注册鼠标点击事件
// 在普通函数里,this的值是动态的,定义this的时候,这个值不会马上确认,会在实际执行的时候进行确认,按钮进行绑定,this指向按钮对象
// 箭头函数this的值没有动态生成arrowFunction创建的时候就定义了this,定义时候arrowFunction指向windown,this就指向widown