Pregunta

Esta es una especie de pregunta aleatoria, pero me preguntaba por qué una devolución de llamada nombrada estaba funcionando peor, para un evento de clic, en relación con una función anónima.

Aquí está el enlace al Jsperf Pruebas que corrí en Firefox y Chrome en Mac.

Supongo que mi suposición era que las devoluciones de llamada con nombre siempre funcionarían mejor. Por ejemplo, cuando se usa .each la devolución de llamada llamada es un poco más rápido.

¡Gracias por tu tiempo!

Editar Edité el .each Prueba de JSPerf porque (a) no estaba probando lo que quise decir y (b) estoy difícil para imitar eventos más.

Edición 2 La configuración de mi prueba fue incorrecta desde el principio, ya que @sailija señala a continuación. Esta pregunta es algo inútil, pero al menos podría ayudar a alguien con pruebas de JSPERF.

¿Fue útil?

Solución

El JSPerf está roto porque acumula los controladores de eventos a través de los límites de las pruebas. En otros WROD, cualquier prueba que se ejecute primero será la "más rápida".

Y toda la premisa de la prueba es ridícula, no hay diferencia entre una función que tiene un nombre y una función que no tiene un nombre si todo lo demás es igual. Solo verá una diferencia cuando esté configurando JSPerf incorrectamente. Cuando constantemente obtienes resultados iguales para ellos, entonces sabes que lo configura correctamente, pero ya lo sabrías por el sentido común :)

Otros consejos

La función anónima se pasa como argumento, por lo que para resolver su referencia, la cadena de alcance no llega a la función principal que la creó, solo existe como argumento. Por otro lado, para resolver la referencia a la función nombrada, la cadena de alcance se sigue hasta el cierre de la función principal donde se creó la función nombrada.

Editar:Traté de probar esto, pero parece que la función anónima no se resuelve más rápido, http://jsperf.com/scope-hain-anonymousfunction

Editar: Si llamas a.off(); Para eliminar los manejadores de eventos, la función nombrada será tan rápida o más rápida que resolver la función anónima.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top