Al llamar a multiMax () en la parte inferior del bloque de código, pasamos 4 argumentos. Veo cómo se desarrolla el resto de la lógica. Simplemente no entiendo por qué alert (multi) es igual a '3';

http://jsfiddle.net/captainill/AjEPV/

function multiMax(multi){
  alert(multi);
  // Make an array of all but the first argument 
  var allButFirst = Array().slice.call( arguments, 1 ); 

  // Find the largest number in that array of arguments 
  var largestAllButFirst = Math.max.apply( Math, allButFirst );

  // Return the multiplied result 
  return multi * largestAllButFirst; 
} 
alert( multiMax(3, 1, 2, 3) == 9, "3*3=9 (First arg, by largest.)" );

He estado revisando estos excelentes pequeños tutoriales: http://ejohn.org/apps/learn/#47

0
captainill 9 jun. 2011 a las 22:53

3 respuestas

La mejor respuesta

alert(multi) muestra "3" porque multi es el primer argumento, y 3 es el primer valor que está pasando a la función.

2
Robert 9 jun. 2011 a las 19:08

ASSERT y ALERT NO son lo mismo.

No creo que la llamada alert sea el problema real aquí. alert solo imprime / muestra el primer valor -> en su caso, alert( multimax(3, 1,2,3) == 9, "Whatever") tiene un primer parámetro de multimax(3,1,2,3)==9, que como todos podemos ver es true. Es por eso que obtiene true en lugar de "3 * 3 == 9".

0
josh.trow 9 jun. 2011 a las 19:05

alert(multi) muestra "3" porque está pasando 3 como primer valor en la función multiMax.

Reemplace esta línea.

alert( multiMax(3, 1, 2, 3) == 9, "3*3=9 (First arg, by largest.)" );

Con

alert( multiMax(4, 1, 2, 3) == 9, "3*3=9 (First arg, by largest.)" );

Y el resultado será 4, observe la diferencia entre las dos líneas.

2
mikerobi 9 jun. 2011 a las 19:07