¿Existe alguna diferencia de rendimiento grave entre el uso indefinido o nulo como valor ficticio en JS?


Respuesta 1:

Depende del conjunto de datos, pero siempre puede usar la verificación nula de JavaScript para nulo e indefinido:

// void 0 devuelve 'undefined', no la palabra clave no reservada, sino el valor real 'undefined'
var a;
var b = nulo;
console.log (a == vacío 0, b == vacío 0);
// imprime 'verdadero verdadero'

Hay poca o ninguna diferencia de rendimiento entre ambos, ya que "nulo" se resolverá al valor "indefinido". La razón por la que usamos "vacío 0" es porque es breve e idiomático, y las personas pueden entender lo que hace cuando lo ven.

Esta excelente respuesta en Stack Overflow debería responder cualquier pregunta sobre el tema.


Respuesta 2:

No. Puede haber una diferencia entre el uso de primitivos y globales como estos, pero no suele ser grave (a menos que me sienta serio al respecto). Si me tomo en serio el rendimiento, perfilo el rendimiento de mi código directamente para averiguar exactamente cómo se ve. Esto significa que no voy a Quora y hago preguntas como esta, sino que perfilo mi código. A veces (o con demasiada frecuencia) también utilizo jsperf para buscar detalles específicos, pero muchas de las muestras allí combinan demasiados factores para ser de valor práctico.

Los motores de JavaScript tienen optimizaciones internas que conocemos con el tiempo, y luego se actualizan y cambian, por lo que necesito desaprender los hábitos extraños por los que trabajé tan duro.

Los valores nulo e indefinido son globales y otros no (por ejemplo, nulo frente a falso), pero la diferencia en el rendimiento es mucho menor que en el pasado cuando los navegadores eran mucho más lentos. Ya es difícil responder preguntas específicas de rendimiento como resultado de la combinación de optimizaciones internas del navegador (que cambian durante el tiempo de ejecución) junto con detalles prácticos como búsquedas de alcance, etc. Un matiz sutil para aprovechar estas optimizaciones es el tipo de variables que se pasan: por lo tanto, usar false y luego un número u objeto puede potencialmente vencer estas mejoras de rendimiento interno (por lo que la escritura consistente ayuda a todo).

Hacer menos trabajo, mantenerse en el ámbito local ayuda con la velocidad, usar menos variables ayuda con la memoria y las herramientas de desarrollo son siempre la mejor manera de responder preguntas específicas como esta.

Comience a analizar el rendimiento del tiempo de ejecución | Herramientas para desarrolladores web | Desarrolladores de Google

Una pregunta seria sería: ¿funciona para el cliente o no? ¿Estoy trabajando en algo útil para las personas?


Respuesta 3:

No. Puede haber una diferencia entre el uso de primitivos y globales como estos, pero no suele ser grave (a menos que me sienta serio al respecto). Si me tomo en serio el rendimiento, perfilo el rendimiento de mi código directamente para averiguar exactamente cómo se ve. Esto significa que no voy a Quora y hago preguntas como esta, sino que perfilo mi código. A veces (o con demasiada frecuencia) también utilizo jsperf para buscar detalles específicos, pero muchas de las muestras allí combinan demasiados factores para ser de valor práctico.

Los motores de JavaScript tienen optimizaciones internas que conocemos con el tiempo, y luego se actualizan y cambian, por lo que necesito desaprender los hábitos extraños por los que trabajé tan duro.

Los valores nulo e indefinido son globales y otros no (por ejemplo, nulo frente a falso), pero la diferencia en el rendimiento es mucho menor que en el pasado cuando los navegadores eran mucho más lentos. Ya es difícil responder preguntas específicas de rendimiento como resultado de la combinación de optimizaciones internas del navegador (que cambian durante el tiempo de ejecución) junto con detalles prácticos como búsquedas de alcance, etc. Un matiz sutil para aprovechar estas optimizaciones es el tipo de variables que se pasan: por lo tanto, usar false y luego un número u objeto puede potencialmente vencer estas mejoras de rendimiento interno (por lo que la escritura consistente ayuda a todo).

Hacer menos trabajo, mantenerse en el ámbito local ayuda con la velocidad, usar menos variables ayuda con la memoria y las herramientas de desarrollo son siempre la mejor manera de responder preguntas específicas como esta.

Comience a analizar el rendimiento del tiempo de ejecución | Herramientas para desarrolladores web | Desarrolladores de Google

Una pregunta seria sería: ¿funciona para el cliente o no? ¿Estoy trabajando en algo útil para las personas?


Respuesta 4:

No. Puede haber una diferencia entre el uso de primitivos y globales como estos, pero no suele ser grave (a menos que me sienta serio al respecto). Si me tomo en serio el rendimiento, perfilo el rendimiento de mi código directamente para averiguar exactamente cómo se ve. Esto significa que no voy a Quora y hago preguntas como esta, sino que perfilo mi código. A veces (o con demasiada frecuencia) también utilizo jsperf para buscar detalles específicos, pero muchas de las muestras allí combinan demasiados factores para ser de valor práctico.

Los motores de JavaScript tienen optimizaciones internas que conocemos con el tiempo, y luego se actualizan y cambian, por lo que necesito desaprender los hábitos extraños por los que trabajé tan duro.

Los valores nulo e indefinido son globales y otros no (por ejemplo, nulo frente a falso), pero la diferencia en el rendimiento es mucho menor que en el pasado cuando los navegadores eran mucho más lentos. Ya es difícil responder preguntas específicas de rendimiento como resultado de la combinación de optimizaciones internas del navegador (que cambian durante el tiempo de ejecución) junto con detalles prácticos como búsquedas de alcance, etc. Un matiz sutil para aprovechar estas optimizaciones es el tipo de variables que se pasan: por lo tanto, usar false y luego un número u objeto puede potencialmente vencer estas mejoras de rendimiento interno (por lo que la escritura consistente ayuda a todo).

Hacer menos trabajo, mantenerse en el ámbito local ayuda con la velocidad, usar menos variables ayuda con la memoria y las herramientas de desarrollo son siempre la mejor manera de responder preguntas específicas como esta.

Comience a analizar el rendimiento del tiempo de ejecución | Herramientas para desarrolladores web | Desarrolladores de Google

Una pregunta seria sería: ¿funciona para el cliente o no? ¿Estoy trabajando en algo útil para las personas?


Respuesta 5:

No. Puede haber una diferencia entre el uso de primitivos y globales como estos, pero no suele ser grave (a menos que me sienta serio al respecto). Si me tomo en serio el rendimiento, perfilo el rendimiento de mi código directamente para averiguar exactamente cómo se ve. Esto significa que no voy a Quora y hago preguntas como esta, sino que perfilo mi código. A veces (o con demasiada frecuencia) también utilizo jsperf para buscar detalles específicos, pero muchas de las muestras allí combinan demasiados factores para ser de valor práctico.

Los motores de JavaScript tienen optimizaciones internas que conocemos con el tiempo, y luego se actualizan y cambian, por lo que necesito desaprender los hábitos extraños por los que trabajé tan duro.

Los valores nulo e indefinido son globales y otros no (por ejemplo, nulo frente a falso), pero la diferencia en el rendimiento es mucho menor que en el pasado cuando los navegadores eran mucho más lentos. Ya es difícil responder preguntas específicas de rendimiento como resultado de la combinación de optimizaciones internas del navegador (que cambian durante el tiempo de ejecución) junto con detalles prácticos como búsquedas de alcance, etc. Un matiz sutil para aprovechar estas optimizaciones es el tipo de variables que se pasan: por lo tanto, usar false y luego un número u objeto puede potencialmente vencer estas mejoras de rendimiento interno (por lo que la escritura consistente ayuda a todo).

Hacer menos trabajo, mantenerse en el ámbito local ayuda con la velocidad, usar menos variables ayuda con la memoria y las herramientas de desarrollo son siempre la mejor manera de responder preguntas específicas como esta.

Comience a analizar el rendimiento del tiempo de ejecución | Herramientas para desarrolladores web | Desarrolladores de Google

Una pregunta seria sería: ¿funciona para el cliente o no? ¿Estoy trabajando en algo útil para las personas?