2012-08-14 61 views
1

最大可以初始化什么?我一直在努力解决,但没有运气。Javascript:最多可以初始化什么?

NUMBER_OF_INPUTS = 5; 

var i; 
var max; 
var userInput; // Input from user 

max = ???? ; 
for(i=0; i<NUMBER_OF_INPUTS; i++) 
{ userInput = parseInt(prompt('Enter input: ')); 
if (userInput > max) 
max = userInput; 
} 

alert('Max: ' + max); 
+1

这是功课?此外,您没有处理用户点击取消提示的情况。 – jfriend00 2012-08-14 04:13:03

+0

您尚未提供足够的信息以获得明确答案。在接受的答案中,Number.NEGATIVE_INFINITY是一个逻辑解释,但取决于代码是“0”还是某个正数可能更适合作为默认值。 – nnnnnn 2012-08-14 05:02:01

回答

0

使用Javascript Number.NEGATIVE_INFINITY常量。这样,任何用户输入都会比变量初始化的更大,因为NEGATIVE_INIFINTY比JS可以表示的所有其他数字要小。

+0

是什么让'Number.NEGATIVE_INFINITY'比'-Infinity'更好的选择? – 2012-08-14 10:55:26

+0

没有@Matt,它们代表了相同的概念。不知道为什么我得到了答案,因为你有更完整的答案。 – 2012-08-14 14:17:35

6

-Infinity怎么样?或者,你可以使用null,以及特殊情况下它:

if (max == null || userInput > max) { 
    max = userInput; 
} 

如果你想获得真正看中的,不要自己编写循环的。让Math.max做的工作:

var i; 
var userInputs = []; 
var max; 

for (i = 0; i<NUMBER_OF_INPUTS; i++) 
{ 
    userInputs.push(parseInt(prompt('Enter input: '), 10)); 
               // ↑↑↑↑ always pass the radix 
               // to parseInt() 
} 

max = Math.max.apply(null, userInputs); 
+0

巧妙地使用'Math.max' - 尽管它有点令人困惑,我只是为了与'-Infinity'进行比较(因为有时这样的算法可以保证复杂性,无论如何都排除'Math.max')。 – Nicole 2012-08-14 04:06:03

1

Number.NEGATIVE_INFINITY可能是一个不错的选择,但实际上,你不将其初始化到任何东西,有一对夫妇的其他选项。你可以在“脱环”第一次迭代,以便它强制分配到max

NUMBER_OF_INPUTS = 5; 
var i; 
var max; 
var userInput; 

userInput = parseInt (prompt ('Enter input: ')); 
max = userInput; 
for (i = 1; i < NUMBER_OF_INPUTS; i++) { 
    userInput = parseInt (prompt ('Enter input: ')); 
    if (userInput > max) 
     max = userInput; 
} 
alert('Max: ' + max); 

虽然导致重复的代码一点点,它只是看起来不洁。

或者,您可以使用i控制变量,迫使它在循环的第一次迭代:

NUMBER_OF_INPUTS = 5; 
var i; 
var max; 
var userInput; 

for (i = 0; i < NUMBER_OF_INPUTS; i++) { 
    userInput = parseInt (prompt ('Enter input: ')); 
    if ((i == 0) || (userInput > max)) 
     max = userInput; 
} 
alert('Max: ' + max);