Existe-t-il une sérieuse différence de performances entre l'utilisation d'undefined ou null comme valeur fictive dans JS?


Réponse 1:

Cela dépend de l'ensemble de données, mais vous pouvez toujours utiliser la vérification void de JavaScript pour null et indéfini:

// void 0 renvoie 'undefined', pas le mot-clé non réservé, mais la valeur réelle 'undefined'
var a;
var b = null;
console.log (a == void 0, b == void 0);
// affiche «vrai vrai»

Il y a peu ou pas de différence de performances entre les deux, car «nul» se résoudra en valeur «non défini». La raison pour laquelle nous utilisons "void 0" est parce qu'il est court et idiomatique, et les gens peuvent comprendre ce qu'il fait quand ils le voient.

Cette excellente réponse sur Stack Overflow devrait répondre à toute question sur le sujet.


Réponse 2:

Non. Il peut y avoir une différence entre utiliser des primitives et des globales comme celles-ci, mais ce n'est généralement pas grave (sauf si je me sens sérieux à ce sujet). Si je suis sérieux au sujet des performances, je profile directement les performances de mon code pour savoir exactement à quoi il ressemble. Cela signifie que je ne vais pas sur Quora et que je ne pose pas de questions comme celle-ci, je préfère profiler mon code. Parfois (ou trop souvent), je vais aussi sur jsperf pour fouiller pour des détails spécifiques, mais beaucoup d'échantillons réunissent trop de facteurs pour avoir une valeur pratique.

Les moteurs JavaScript ont des optimisations internes que nous apprenons au fil du temps, puis ils sont mis à jour et changent, donc je dois désapprendre les habitudes bizarres que j'ai travaillé si dur à utiliser.

Les valeurs null et undefined sont globales et d'autres non (par exemple null vs false) mais la différence de performances importe beaucoup moins que par le passé lorsque les navigateurs étaient beaucoup plus lents. Il est difficile de répondre à des questions de performances spécifiques en raison du mélange d'optimisations internes du navigateur (qui changent pendant l'exécution) avec des détails pratiques comme les recherches de portée, etc. Une nuance subtile pour tirer parti de ces optimisations est le type de variables transmises: ainsi, l'utilisation de false puis d'un nombre ou d'un objet peut potentiellement annuler ces améliorations de performances internes (une saisie cohérente aide donc tout).

Faire moins de travail, rester dans la portée locale aide à la vitesse, utiliser moins de variables aide à la mémoire et les outils de développement sont toujours le meilleur moyen de répondre à des questions spécifiques comme celle-ci.

Premiers pas avec l'analyse des performances d'exécution | Outils pour les développeurs Web | Développeurs Google

Une question sérieuse serait: cela fonctionne-t-il pour le client ou non? Suis-je en train de travailler sur quelque chose d'utile pour les gens?


Réponse 3:

Non. Il peut y avoir une différence entre utiliser des primitives et des globales comme celles-ci, mais ce n'est généralement pas grave (sauf si je me sens sérieux à ce sujet). Si je suis sérieux au sujet des performances, je profile directement les performances de mon code pour savoir exactement à quoi il ressemble. Cela signifie que je ne vais pas sur Quora et que je ne pose pas de questions comme celle-ci, je préfère profiler mon code. Parfois (ou trop souvent), je vais aussi sur jsperf pour fouiller pour des détails spécifiques, mais beaucoup d'échantillons réunissent trop de facteurs pour avoir une valeur pratique.

Les moteurs JavaScript ont des optimisations internes que nous apprenons au fil du temps, puis ils sont mis à jour et changent, donc je dois désapprendre les habitudes bizarres que j'ai travaillé si dur à utiliser.

Les valeurs null et undefined sont globales et d'autres non (par exemple null vs false) mais la différence de performances importe beaucoup moins que par le passé lorsque les navigateurs étaient beaucoup plus lents. Il est difficile de répondre à des questions de performances spécifiques en raison du mélange d'optimisations internes du navigateur (qui changent pendant l'exécution) avec des détails pratiques comme les recherches de portée, etc. Une nuance subtile pour tirer parti de ces optimisations est le type de variables transmises: ainsi, l'utilisation de false puis d'un nombre ou d'un objet peut potentiellement annuler ces améliorations de performances internes (une saisie cohérente aide donc tout).

Faire moins de travail, rester dans la portée locale aide à la vitesse, utiliser moins de variables aide à la mémoire et les outils de développement sont toujours le meilleur moyen de répondre à des questions spécifiques comme celle-ci.

Premiers pas avec l'analyse des performances d'exécution | Outils pour les développeurs Web | Développeurs Google

Une question sérieuse serait: cela fonctionne-t-il pour le client ou non? Suis-je en train de travailler sur quelque chose d'utile pour les gens?


Réponse 4:

Non. Il peut y avoir une différence entre utiliser des primitives et des globales comme celles-ci, mais ce n'est généralement pas grave (sauf si je me sens sérieux à ce sujet). Si je suis sérieux au sujet des performances, je profile directement les performances de mon code pour savoir exactement à quoi il ressemble. Cela signifie que je ne vais pas sur Quora et que je ne pose pas de questions comme celle-ci, je préfère profiler mon code. Parfois (ou trop souvent), je vais aussi sur jsperf pour fouiller pour des détails spécifiques, mais beaucoup d'échantillons réunissent trop de facteurs pour avoir une valeur pratique.

Les moteurs JavaScript ont des optimisations internes que nous apprenons au fil du temps, puis ils sont mis à jour et changent, donc je dois désapprendre les habitudes bizarres que j'ai travaillé si dur à utiliser.

Les valeurs null et undefined sont globales et d'autres non (par exemple null vs false) mais la différence de performances importe beaucoup moins que par le passé lorsque les navigateurs étaient beaucoup plus lents. Il est difficile de répondre à des questions de performances spécifiques en raison du mélange d'optimisations internes du navigateur (qui changent pendant l'exécution) avec des détails pratiques comme les recherches de portée, etc. Une nuance subtile pour tirer parti de ces optimisations est le type de variables transmises: ainsi, l'utilisation de false puis d'un nombre ou d'un objet peut potentiellement annuler ces améliorations de performances internes (une saisie cohérente aide donc tout).

Faire moins de travail, rester dans la portée locale aide à la vitesse, utiliser moins de variables aide à la mémoire et les outils de développement sont toujours le meilleur moyen de répondre à des questions spécifiques comme celle-ci.

Premiers pas avec l'analyse des performances d'exécution | Outils pour les développeurs Web | Développeurs Google

Une question sérieuse serait: cela fonctionne-t-il pour le client ou non? Suis-je en train de travailler sur quelque chose d'utile pour les gens?


Réponse 5:

Non. Il peut y avoir une différence entre utiliser des primitives et des globales comme celles-ci, mais ce n'est généralement pas grave (sauf si je me sens sérieux à ce sujet). Si je suis sérieux au sujet des performances, je profile directement les performances de mon code pour savoir exactement à quoi il ressemble. Cela signifie que je ne vais pas sur Quora et que je ne pose pas de questions comme celle-ci, je préfère profiler mon code. Parfois (ou trop souvent), je vais aussi sur jsperf pour fouiller pour des détails spécifiques, mais beaucoup d'échantillons réunissent trop de facteurs pour avoir une valeur pratique.

Les moteurs JavaScript ont des optimisations internes que nous apprenons au fil du temps, puis ils sont mis à jour et changent, donc je dois désapprendre les habitudes bizarres que j'ai travaillé si dur à utiliser.

Les valeurs null et undefined sont globales et d'autres non (par exemple null vs false) mais la différence de performances importe beaucoup moins que par le passé lorsque les navigateurs étaient beaucoup plus lents. Il est difficile de répondre à des questions de performances spécifiques en raison du mélange d'optimisations internes du navigateur (qui changent pendant l'exécution) avec des détails pratiques comme les recherches de portée, etc. Une nuance subtile pour tirer parti de ces optimisations est le type de variables transmises: ainsi, l'utilisation de false puis d'un nombre ou d'un objet peut potentiellement annuler ces améliorations de performances internes (une saisie cohérente aide donc tout).

Faire moins de travail, rester dans la portée locale aide à la vitesse, utiliser moins de variables aide à la mémoire et les outils de développement sont toujours le meilleur moyen de répondre à des questions spécifiques comme celle-ci.

Premiers pas avec l'analyse des performances d'exécution | Outils pour les développeurs Web | Développeurs Google

Une question sérieuse serait: cela fonctionne-t-il pour le client ou non? Suis-je en train de travailler sur quelque chose d'utile pour les gens?