ES6中的箭头函数实例化的函数的对象与正式的函数表达式创建的函数对象行为是相同的。任何可以使用函数表达式的地方都可以使用箭头函数。
let sum1 = function (a, b) {
return a + b
}
let sum2 = (a, b) => {
return a + b
}
console.log(sum1(10,20)) // 30
console.log(sum2(10,20)) // 30
箭头函数简洁的语法非常适合嵌入函数的场景:
let list = [1, 2, 3, 4]
console.log(list.map(function(i) {
return i + 1
})) // [ 2, 3, 4, 5 ]
console.log(list.map((i) => {
return i + 1
})) // [ 2, 3, 4, 5 ]
如果只有一个参数,可以不用括号。如果是没有参数或是有多个参数需要加括号
let double = x => { return x * 2}
let print = () => { console.log('hello') }
let sum = (a, b) => { return a + b }
若函数不使用大括号,则会隐式返回这行代码的值
let sum = (a, b) => a + b
console.log(sum(10, 20)) // 30
省略大括号也可以进行赋值操作
let person = {}
let setName = x => {
x.name = 'Mike'
}
setName(person)
console.log(person.name) // 'Mike'
箭头函数不能使用arguments
,super
和new.target
,也不能用作构造函数,没有prototype
属性。
let sayName = () => { console.log(arguments[0]) }
sayName('Mike') // undefined