什么是箭头函数?
箭头函数属于函数扩展的一部分。那么什么是箭头函数呢?怎么表示呢?
ES6 允许使用“箭头”(=>)定义函数。
示例1:
//es6之前定义一个函数
var fn = function(){
console.log("hello");
}
//es6箭头函数定义一个函数
var fn = ()=>{
console.log("hello");
};
由示例1可以直观了解箭头函数的用法,并且要注意箭头函数只能用来表示匿名函数。可以说全部箭头函数都是匿名函数。
使用箭头函数的注意事项:
1.箭头函数内部this的指向问题!
普通函数内部的this指向是可以改变的,但是箭头函数内部的this指向却是固定的!
示例2:
let obj1 = {
fn:function(){
console.log(this);
let f = ()=>{
console.log(this);
};
f();
}
};
obj1.fn();
从示例2可以知道:箭头函数里面的this指向并不是f,而是fn。箭头函数里面的this是上一级作用域的this。
2. 箭头函数没有arguments对象!
示例3:
let f = ()=>{
console.log(arguments);
}
f();
//输出结果是:Uncaught ReferenceError: arguments is not defined
从示例3可以看到,箭头函数并有没有arguments对象。
3. 箭头函数不可以用作构造函数!
示例4:
function Fn(){}
let a =new Fn();
let f = ()=>{
}
console.log(new f());
//输出结果是:Uncaught TypeError: f is not a constructor
从示例4可以知道,箭头函数不能作为构造函数一样,如果new一个箭头函数,则会报错!