Excusez-moi, quelle est la différence entre ajouter ou non des parenthèses dans la fonction mm après nouveau. Pourquoi est-ce que j'obtiens les mêmes résultats ? Un expert senior peut-il expliquer le principe ?
Tout d'abord, pour ce genre de question basique, vous devez apprendre à consulter la documentation officielle. La documentation contient des instructions détaillées : new foo est équivalent à new foo(), qui ne peut être utilisé que sans passer de paramètres. Bien sûr, vous ne pouvez pas faire entièrement confiance à la documentation, après tout, les pièges de js. . Alors quelle est la différence ? Il y a des explications détaillées dans ce résumé des priorités : new (avec liste de paramètres) a une priorité de 19, et new (sans séparation des paramètres) a une priorité de 18, donc new foo() sera exécuté en premier
Enfin, je me souviens avoir vu il n'y a pas longtemps un article sur une question d'entretien plutôt dégoûtante, qui testait..., new f(), new f, new f.g(), new f().g(), etc. problème de calcul de priorité, vous pouvez le rechercher vous-même
Tout d'abord, pour ce genre de question basique, vous devez apprendre à consulter la documentation officielle.
La documentation contient des instructions détaillées : new foo est équivalent à new foo(), qui ne peut être utilisé que sans passer de paramètres.
Bien sûr, vous ne pouvez pas faire entièrement confiance à la documentation, après tout, les pièges de js. .
Alors quelle est la différence ? Il y a des explications détaillées dans ce
résumé des priorités : new (avec liste de paramètres) a une priorité de 19, et new (sans séparation des paramètres) a une priorité de 18, donc new foo() sera exécuté en premier
Enfin, je me souviens avoir vu il n'y a pas longtemps un article sur une question d'entretien plutôt dégoûtante, qui testait..., new f(), new f, new f.g(), new f().g(), etc. problème de calcul de priorité, vous pouvez le rechercher vous-même
Référez-vous à MDN
Lorsqu'il n'est pas nécessaire de passer des paramètres, les parenthèses
()
sont facultativesvar mm = fonction(val){
}
var a = nouveau mm(1) ;
console.log(a)
var b = nouveau mm ;
console.log(b)
Si le constructeur ne nécessite pas de paramètres, il n'y a aucune différence entre ajouter et ne pas ajouter de parenthèses.