JavaScript 中的函数(三)箭头函数几种写法
本文最后更新于 338 天前,如有失效请评论区留言。

前言

这节内容来说一说 ES6标准中新增的一种新的函数:箭头函数(Arrow Function)
其实就是对函数的一种简写

普通函数与箭头函数的转换过程

下面这个例子中的每一步的转化都是箭头函数的一种形式

// 传统匿名函数
(function (a) {
  return a + 100;
});

// 1. 移除“function”,并将箭头放置于参数和函数体起始大括号之间
(a) => {
  return a + 100;
};

// 2. 移除代表函数体的大括号和“return”——返回值是隐含的
(a) => a + 100;

// 3. 移除参数周围的括号
a => a + 100;

步骤如下:

  1. 移除function,并将箭头放置于参数和函数体起始大括号之间
  2. 移除代表函数体的大括号和return——返回值是隐含的
  3. 移除参数周围的括号

当函数只有一个简单参数时,可以省略括号,但如果有多个参数,则括号不能省略

箭头函数写法有多少种

形式1,无参

var test = function () {
  return 100;
}
console.log(test())

带函数块

var test = () => { return 100 }
console.log(test())

不带函数块

var test = () => 100
console.log(test())

形式2,一个参数

有一个参数的情况下进行转换

var test = function (a) {
  return a + 100;
}
console.log(test(100))

在无参的写法上再增加一种参数不带括号的写法

var test = a => a + 100
console.log(test(100))

形式3,多个参数

var test = function (a, b) {
  return a + b;
}
console.log(test(100, 200))

多个参数的情况下不能去掉参数的括号,其他写法和形式2一样

// var test = (a, b)=> { return a + b }
var test = (a, b)=> a + b
console.log(test(100, 200))

形式4,对象字面量

对象字面量是封闭在花括号对({})中的一个对象的零个或多个“属性名—值”对的(元素)列表

例如,add 函数返回的是一个对象字面量

function add(x) {
  return {sum: x}
}

console.log(add(2).sum)

这个怎么写呢,按照上面的规则,写成下面的形式,会提示 add() 会返回 undefined

const add = (x) => {sum: x}
// 调用 add() 会返回 undefined!

因为和函数体的{ ... }有语法冲突,要解决这个问题,可以用括号将对象字面量包装起来:

const add = (x) => ({sum: x})
版权声明:除特殊说明,博客文章均为Gavin原创,依据CC BY-SA 4.0许可证进行授权,转载请附上出处链接及本声明。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇