在这个Javascript函数中为什么警报(多)警告值'3'

时间:2011-06-09 18:53:41

标签: javascript

在代码块的底部调用multiMax(),我们传入4个参数。我看到剩下的逻辑如何发挥我只是不明白为什么警报(多)等于'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.)" );

我一直在阅读这些优秀的小教程: http://ejohn.org/apps/learn/#47

3 个答案:

答案 0 :(得分:2)

alert(multi)显示“3”,因为您将3作为第一个值传递到multiMax函数。

替换此行。

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

使用

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

结果将是4,注意两行之间的差异。

答案 1 :(得分:2)

alert(multi)显示“3”,因为multi是第一个参数,3是您传递给函数的第一个值。

答案 2 :(得分:0)

ASSERTALERT不是一回事。

我不认为alert电话是真正的问题。 alert仅打印/显示第一个值 - >在您的情况下,alert( multimax(3, 1,2,3) == 9, "Whatever")的第一个参数为multimax(3,1,2,3)==9,我们都可以看到true。这就是为什么你得到true而不是“3 * 3 == 9”。