33 votes

Parenthèses inversées en Javascript

Qu'est-ce qu'il y a dans Javascript qui me permet d'utiliser des parenthèses inversées / à l'envers dans des appels de fonction comme celui-ci ? Je fonctionne dans une console Node sur le CLI ; spécifiquement Node version 0.10.25.

function a(){ return 42 }
a() // -> 42
a)( // -> 42.  WTF?

function b(t){ return t }
b(4) // -> 4
b)4( // No function evaluation; presumably dangling parentheses
b)(4 // -> 4.  WTF?

Addendum : Cela ne semble pas fonctionner dans Chrome 33.0.1750.152, Safari 7.0.2 ou Firefox 27.01. Est-ce que c'est en fait une sorte de "fonctionnalité" d'une certaine interprétation d'ECMAScript, ou une particularité de Node ? Si Node utilise V8, ne devrait-il pas correspondre aux résultats de Chrome ?

23voto

fabiolune Points 311

Il est possible que la console englobe tout dans une instruction eval : ce qui est réellement évalué est peut-être eval(a)(). évalué est peut-être eval(a)(). Dans ce cas, Chrome renvoie également 42.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X