Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

116
Views
Variable constante en ámbito global o en función repetida

Estoy construyendo un espacio virtual con Three.js, integrando activos 3D y sonido espacial, por lo que puede ser un gran desafío para el rendimiento. Tengo una función que se llama en cada cuadro (cada 1/60 de segundo), y me preguntaba dónde colocar las variables constantes, para que gaste la menor cantidad de recursos posible.

Estoy pensando que debería ponerlo mejor en el alcance global, para que no se asigne nuevamente en cada cuadro. Pero aprendí que debo evitar "contaminar" el alcance global tanto como pueda, y esta variable solo se requiere en esa función dada.

Entonces, ¿debería ponerlo en el ámbito global, por lo tanto, contaminarlo un poco? ¿Reasignarlo cada vez y leerlo desde el alcance global de la misma manera, en cuanto al rendimiento?

Aquí está la función para proporcionar una idea, la variable constante es EASING_FACTOR :

 function easeTransition(current, old) { const EASING_FACTOR = 100; let result = {}; for (const arg in current) { const diff = current[arg] - old[arg]; result[arg] = old[arg] + diff / EASING_FACTOR; } return result; }

¡Gracias!

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

const EASING_FACTOR = 100; const EASING_FACTOR_INVERSE = 1/EASING_FACTOR function easeTransition(current, old) { let result = {}; for (const arg in current) { const diff = current[arg] - old[arg]; result[arg] = old[arg] + diff * EASING_FACTOR_INVERSE; } return result; }

Las divisiones son más lentas que las multiplicaciones, por lo que tendría sentido calcular el inverso una vez y luego hacer miles de multiplicaciones en lugar de divisiones.

Otros patrones deberían ayudarlo a evitar contaminar el alcance global. En realidad, no estoy seguro de la terminología aquí (qué tipo de módulos, etc.), pero si este código está en un archivo, solo exportaría la función de easeTransition , por lo que sus constantes no serían realmente globales.

Si desea probar esto "manualmente", usaría un IIFE:

 const easeTransition = (function(){ const EASING_FACTOR = 100; return function _easeTransition(current, old) { let result = {}; for (const arg in current) { const diff = current[arg] - old[arg]; result[arg] = old[arg] + diff / EASING_FACTOR; } return result; } })() //<- this invokes it "immediately"

const EASING_FACTOR ahora está en un "cierre" y lo único que expone es la función interna.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!