Tengo un script que estoy usando para calcular el precio de un campo seleccionado
Cuando ejecuto la función 'calculateTotal()' aparece este error "No se puede acceder a 'usagePrice' antes de la inicialización".
Aquí está mi código:
// Returns total for step 1 const usagePrice = () => { const field = document.querySelector('input[name="usage"]:checked'); const subField = document.querySelector('input[name="varifocal-lenses"]:checked'); let price = field.dataset.price; if (field.value == 'varifocal') { price = subField.dataset.price; } console.log('Usage price: ' + price); return price; } // Adds all totals together const calculateTotal = () => { const usagePrice = usagePrice(); const prescriptionPrice = prescriptionPrice(); const lensPackagePrice = lensPackagePrice(); const lensTypePrice = lensTypePrice(); const total = usagePrice + prescriptionPrice + lensPackagePrice + lensTypePrice; return total; } console.log(calculateTotal());¿Alguien puede explicar qué está pasando mal? Gracias de antemano.
Resuelto ahora.
El problema era que estaba nombrando las variables en computeTotal() igual que las funciones declaradas antes.
// Adds all totals together const calculateTotal = () => { const usagePriceValue = usagePrice(); const prescriptionPriceValue = prescriptionPrice(); const lensPackagePriceValue = lensPackagePrice(); const lensTypePriceValue = lensTypePrice(); const total = usagePriceValue + prescriptionPriceValue + lensPackagePriceValue + lensTypePriceValue; return total; }Así como el nombre de la función calculateTotal comienza con un verbo ("calcular"), es muy común nombrar funciones con un verbo al principio. En su caso, tiene sentido comenzar los nombres de las funciones con el verbo "obtener":
const usagePrice = getUsagePrice(); const prescriptionPrice = getPrescriptionPrice(); const lensPackagePrice = getLensPackagePrice(); const lensTypePrice = getLensTypePrice(); const total = usagePrice + prescriptionPrice + lensPackagePrice + lensTypePrice; return total;