文章目录
箭头函数的特点
箭头函数的写法
() => {
}
一、如果只有一个参数可以省略小括号
普通函数
let fn = function (a) {
console.log(a);
}
fn(1)
箭头函数
let fn = a => {
console.log(a);
}
fn(1)
二、如果只有一条返回语句可以省略{}和return
普通函数
let fn = function (a) {
return a
}
console.log(fn(1));
箭头函数
let fn = a => a
console.log(fn(1));
三、箭头函数没有augrments内置对象
普通函数
let fn = function () {
console.log(arguments);
}
fn()
// Arguments [callee: ƒ, Symbol(Symbol.iterator): ƒ]
箭头函数
let fn = () => {
console.log(arguments);
}
fn()
// guments is not defined
四、箭头函数不能用于创建构造函数
普通函数
let Person = function () {
console.log('1');
}
let p1 = new Person()
console.log(p1);
箭头函数
let Person = () => { }
let p1 = new Person()
console.log(p1);
// person is not a constructor
五、箭头函数没有prototype属性
普通函数
let Person = function () {
console.log('1');
}
let p1 = new Person()
console.log(Person.prototype);
// {constructor: ƒ}
箭头函数
let Person = () => {
console.log('1');
}
console.log(Person.prototype);
// undefined
六、call,apply可以调用箭头函数,但是不能改变this指向
普通函数
var name = 'window'
let demo = function () {
console.log('测试');
console.log(this.name);
}
var obj = {
name: 'obj'
}
demo()
demo.call(obj) //this 指向obj对象
demo.apply(obj)//this 指向obj对象
箭头函数
var name = 'window'
let fn = () => {
console.log(this.name);
console.log('箭头');
}
var obj = {
name: 'obj'
}
fn()
fn.call(obj) //this 指向window
fn.apply(obj)//this 指向window