JavaScript中的"=>"运算符

3

当我尝试在JavaScript中声明一个关联数组时,我把Ruby的语法和JavaScript的语法混淆了。

>>> [a => b, c => d]

这会导致一个有效的数组。
>>> JSON.stringify([a => b, c => d])

返回"[null,null]"
typeof(a) === "undefined" // true
typeof(b) === "undefined" // true
typeof(c) === "undefined" // true
typeof(d) === "undefined" // true

这个语法是什么意思?

有投反对票的人愿意发表评论吗? - JohnJohnGa
1个回答

7
这是 ES6箭头函数 的语法,它既是一种简写形式,也可以在词法上设置 this 的值。它使用以下语法:
argument => returnValue

它也可以与多个参数或函数体一起使用(这使得非void函数需要一个return语句):
() => 1
(arg1, arg2) => 2
argument => { return 3; }

返回值是隐式的,这就是为什么它似乎起作用的原因。虽然这仍然是实验性的,但Firefox已经实现了这一点,尽管其他浏览器尚未这样做。
你收到“[null]”的原因是函数无法在JSON中表示,因此它们被转换为null以进行序列化。

1
@Paniyar:https://people.mozilla.org/~jorendorff/es6-draft.html#sec-arrow-function-definitions - Qantas 94 Heavy
@Kos:不太确定,但主要问题在于在某些情况下使用this关键字可能会产生误导性——箭头函数中this的行为与普通函数不同。这类似于Coffeescript的用法以及Ruby的->运算符。 - Qantas 94 Heavy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接