在ECMAScript和AFAIR中有一个自动分号插入规则,它表示如果可能的话(无语法错误)将分号插入行尾,则插入分号。为什么ASI规则忽略箭头函数中的换行符?
这里有一个Y-combinator,使用箭头功能写着:
var Y = (F) =>
(x => F(y => x(x)(y)))
(x => F(y => x(x)(y)))
这将是一个语法错误,在第一行的末尾插入;
,但它的工作原理为第二(第三,但没关系)。 所以表达式应该被解析为:
var Y = (F) =>
(x => F(y => x(x)(y)));
(x => F(y => x(x)(y)));
但随着;
把明确二号线代码的工作方式不同是肯定的,所以没有ASI规则。
问题:为什么不插入分号?
“*如果可能,插入分号*” - 否。 *必要时插入**以避免语法错误* – Bergi
另外'const Y = f => x => f(Y(f))(x)' – naomik