Il existe une règle d'insertion de point-virgule automatique dans ECMAScript et AFAIR. Elle indique que le point-virgule est inséré s'il est possible (pas d'erreur de syntaxe) de l'insérer à la fin de la ligne.Pourquoi la règle ASI ignore-t-elle le retour à la ligne dans la fonction de flèche?
est ici un Y-combinator, écrit avec l'aide d'une fonction de flèche:
var Y = (F) =>
(x => F(y => x(x)(y)))
(x => F(y => x(x)(y)))
Ce serait une erreur de syntaxe pour insérer ;
à la fin de la première ligne, mais il travaille pour la deuxième (et le troisième, mais ça n'a pas d'importance). Ainsi, l'expression doit être analysée comme:
var Y = (F) =>
(x => F(y => x(x)(y)));
(x => F(y => x(x)(y)));
Mais code avec le ;
font explicitement la 2ème ligne fonctionne différemment pour vous, donc il n'y a pas de règle ASI. Question: Pourquoi aucun point-virgule n'est inséré?
"* le point-virgule est inséré si c'est possible *" - non. C'est * est inséré quand ** nécessaire ** pour éviter une erreur de syntaxe * – Bergi
Aussi 'const Y = f => x => f (Y (f)) (x)' – naomik