定义式:不是声明式都算定义式
没有var function的都是定义式
箭头函数:
var fn=(a,b)=>{
return a+b
}
没有function多一个箭头。
与其他函数的区别:
箭头函数的this不再是谁调用就指向谁,箭头函数的this指向是,离他最近的嵌套的function的调用者,知道顶层都没有,就是window.
举例:
如果箭头函数的执行体只有一个表达式,就是返回值,那麽可以省略大括号。
如果箭头函数的形参只有一个,那麽还可以省略小括号。{没有形参,两个以上的形参都不能省}
尽量写成标准写法,不用省略
箭头函数不能用来创建对象,类专门用来创建对象。
如果一个函数的实参传多了,形参没有楞个多,就可以用arguments.但是在箭头函数中不能用,可以用剩余运算符====>…代替arguments
x1中没有10,因为前面的a接受了10,x1中只能接受后面剩余的参数
剩余运算符不能放在形参前面。必须放在最后!
箭头函数的优先级:
强制转换:call apply bind
this指向不改变。
不能这样写
箭头函数 > new绑定 > 显示绑定(强制转换) > 隐式绑定(调用者) > 默认绑定
总结:
- 要有个箭头
- 箭头的前面是小括号,放形参,只有一个形参的时候可以省略小括号;
- 箭头的后面是函数体;
- 如果函数体只有一个语句,没有{},此时的返回值不需要return;
- 箭头函数里面的this总是指向最靠近的function 内部的this;
- 对象里面的方法,尽可能不要使用箭头函数;
- 箭头函数里面没有arguments,可以使用…reset,接收过来就是数组类型,接收的是形参之外的所有实参