Otro más. Ejercicio CU01178E del curso JavaScript desde cero:
EJERCICIO
Escribe este código, ejecútalo y responde a las preguntas que aparecen a continuación.
function conversor(toUnit, factor, offset, input) {
offset = offset || 0;
return [((offset+input)*factor).toFixed(2), toUnit].join(" ");
}
var milesToKm = conversor.bind(undefined, 'km', 1.60936, 0);
var poundsToKg = conversor.bind(undefined, 'kg', 0.45460, 0);
var farenheitToCelsius = conversor.bind(undefined, 'gradosC',0.5556, -32);
alert(milesToKm(10));
alert(poundsToKg(2.5));
alert(farenheitToCelsius(98));
a) ¿Cuántas funciones ligadas (copias parametrizadas) de la función conversor se crean en este código?
Hay 3, milesTokm poundsToKg y farenheitToCelsius.
b) ¿Qué es lo que devuelve la función conversor?
Devuelve el resultado de la conversión de una unidad de medida a otra.
c) ¿Qué objeto actúa como this en la función milesToKm?
No está definido, así que ninguno.
d) ¿Qué tarea cumple y con qué fórmula trabaja la función milesToKm?
Crea una copia de la función conversor y le pasa los argumentos necesarios para que se ejecute.
e) ¿Qué tarea cumple y con qué fórmula trabaja la función poundsToKg?
Crea una copia de la función conversor y le pasa los argumentos necesarios para que se ejecute.
f) ¿Qué resultado devuelve milesToKm(10) y qué significa este resultado?
16.09 km, Es el resultado de transformar millas en kilómetros.
g) ¿Qué resultado devuelve poundsToKg(2.5) y qué significa este resultado?
1.14 kg, Es el resultado de transformar libras a kilos.
h) ¿Qué resultado devuelve farenheitToCelsius(98) y qué significa este resultado?
36.67 gradosC, Es el resultado de transformar grados farenheit en grados Centígrados.
i) ¿Qué significado tiene la expresión offset = offset || 0;?
Si offset no tiene ningún valor, valdrá 0.
j) ¿Cuál es la finalidad del uso de toFixed(2)?
Devuelve un String con el número o variable sobre el que se invoca el método con 2 decimales.
k) ¿Por qué crees que se usa el parámetro offset en la función conversor?
Porque hay funciones que para poder realizar la conversión necesitan un tercer dato.
l) Modifica el código para ampliar la información que se nos muestra: introduce un parámetro fromUnit en la función conversor de modo que el resultado nos informe del dato de origen, sus unidades, y el dato convertido y sus unidades.
function conversor(toUnit, factor, offset, fromUnit, input) {
offset = offset || 0;
return [input, fromUnit, 'son', ((offset+input)*factor).toFixed(2), toUnit].join(" ");
}
var milesToKm = conversor.bind(undefined, 'km', 1.60936, 0, 'millas');
var poundsToKg = conversor.bind(undefined, 'kg', 0.45460, 0, 'libras');
var farenheitToCelsius = conversor.bind(undefined, 'gradosC',0.5556, -32, 'gradosF');
alert(milesToKm(10));
alert(poundsToKg(2.5));
alert(farenheitToCelsius(98));
Saludos.