【发布时间】:2018-10-31 21:01:30
【问题描述】:
我从eslint documentation 看到了一个关于箭头函数的例子:
// The intent is not clear
var x = a => 1 ? 2 : 3;
所以我对箭头函数的优先级进行了一些研究。 => 似乎不被视为运算符,因为在 table of operator precedence on MDN 上找不到它。从页面arrow functions,它说
箭头函数具有特殊的解析规则,与常规函数相比,它们与运算符优先级的交互方式不同。
但没有进一步详细说明特殊的解析规则。所以我的问题是,关于箭头函数的优先规则是什么?
根据我的测试,它的优先级似乎高于赋值,但低于条件(三元)运算符?
var x = 0, a = 5;
console.log(x = a => 1 ? 2 : 3);
// same as x = (a => (1 ? 2 : 3))
console.log(x);
console.log(a);
但我不确定这在不同的浏览器和平台上是否一致。任何人都可以对这种行为给出明确的答案吗?
【问题讨论】:
-
“但我不确定这在不同的浏览器和平台上是否一致。” 是的。 JavaScript 在the specification 中精确指定。很大程度上,不同 JavaScript 引擎以不同方式实现特定行为的时代在 IE11 中结束了。尚未完成的新功能可能会有所不同,但到规范中时,它们是一致的。
-
fat
arrow语法不是“运算符”...只是表示箭头函数的语法。 -
只有我一个不懂这个问题吗?
-
@BhojendraNepal 我在问 JS 解析器如何处理
=>与运算符的混合,如果这听起来更清楚的话。