Javascript:什么应该最大化初始化?

时间:2012-08-14 03:52:32

标签: 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);

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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);

答案 2 :(得分:0)

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