1.说起箭头函数,大家一般会想起什么东西?
我觉得大家肯定会联想起ES6吧,es6新增的函数,它的特点想必大家应该都不陌生吧。
没有this,不能被new关键字调用,没有arguments对象,没有原型等。
这边的话先给大家举一个例子。
没有this
let boss = {
name: "boss",
sayHi(){
setTimeout(function(){
console.log('Hello, ', this.name)
}, 1000)
// 或箭头函数
setTimeout(() => {
console.log('Hi, ', this.name)
}, 1000)
}
};
boss.sayHi()
// Hello, undefined
// Hi, boss
可以看到的是定义了一个对象boss,对象里面有属性和方法,在Window下调用sayHi方法。this指向的是window,然而window里面没有name属性,所以第一个结果是hello, 。而第二个计时器里面是箭头函数,本身没有this,它的this指向的是上下文环境。所以打印的是Hi,boss。
没有原型
var run = () => {};
console.log(run.prototype); // undefined
没有 arguments
function constant() {
return () => arguments[0]
}
var result = constant(1);
console.log(result()); // 1