4 votes

Pourquoi setTimeout avec la nouvelle fonction ignore-t-il l'intervalle d'attente ?

En essayant de faire ça :

setTimeout(function(){alert("Boo");}, 500);

J'ai accidentellement écrit ça :

setTimeout(new function(){alert("Boo");}, 500);

La première version attend 500 millis, puis alerte. La seconde alerte immédiatement.

Pourquoi l'ajout de new devant la fonction provoque ce comportement ?

5voto

Digital Plane Points 11741

Utilisation de new crée un nouvel objet en utilisant la fonction anonyme comme constructeur, de sorte que votre fonction s'exécute et alerte immédiatement.

2voto

alex Points 186293

Ce dernier instancie un Object et appelle son constructeur immédiatement.

0voto

c-smile Points 8609
new function(){alert("Boo");} 

est un équivalent de

var temp1 = function(){alert("Boo");};
var temp2 = new temp1();

La deuxième ligne, comme vous le voyez, invoque votre fonction en utilisant temp1 comme constructeur.

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