integer empty variable javascript

integer empty variable javascript

本文关键字:javascript variable empty integer      更新时间:2024-03-08

我不知道为什么这个返回未定义?

var array = [6, 4, 6, 9];
var min;
var findminimum =   function(){
        array.reduce(function(prev, cur, index, array) {
                    if (cur < min) {
                        min = cur;
                    }
        }, 0);
        return min;
    };
console.log(findminimum());

但当我设置时:

var min = 20;

它运行正常,所以有人可以向我解释如何正确定义num变量吗?

事实上,Javascript中的undefined意味着,这个变量还没有定义,这正是您的情况:

在为变量min赋值之前,您正在使用该变量,因此:

if (cur < min)

将始终返回false,因此没有分配给min的值,并且min = cur;永远不会达到,并且您的函数将返回undefined

编辑:

如果你只写var min;,你只是声明变量min来使用它,你必须通过给它赋值来初始化它,在你的情况下,你应该写:

var min = 0;

现在min将具有值0,然后可以将其与其他变量进行比较。

问题是因为min没有初始化为值,所以它是undefined。因此,您的比较if (cur < min)永远不会为真,并且min仍然是未定义的。此外,如果您要使用reduce()而不是简单的循环,您可能希望以不同的方式使用它,下面是一个有效的代码示例:

var array = [6, 4, 6, 9, 1, -99];
var min = 9999;
var findminimum = function () {
    // you could return the final output of reduce()...
    return array.reduce(function (prev, cur, index, array) {
        if (cur < min) {
            min = cur;
        }
        return min; // ...then this return statement would be here inside the reduce callback
    }, 0);
};
console.log(findminimum());

您需要为min分配一个值,否则您将无法测试其值

if (typeof min == "undefined" || cur < min) {
    min = cur;
}

您的主要问题是,使用reduce min的ouside中的一个变量来存储数组的最小值。Array#reduce()是一种从具有可能给定起始值的迭代中获得单个结果的方法。

问题(顺序相反):

  • reduce(..., 0)以0开头。毫无意义,因为它可能是一个最小值或一个太小的值,就像在您的数组[6, 4, 6, 9]中一样。

  • 最好不取initialValue,因为如果不给定initialValue,则reduce取prevcur的前两个元素。如果数组只有一个元素,则返回此元素。

  • 所需减少的缩写:

    min = array.reduce(function (prev, cur) {
        return cur < prev ? cur : prev;
    });
    

现在你可以把它放进一个函数中求最小值,并把一个数组作为参数:

function getMinimum(array) {
    return array.reduce(function (prev, cur) {
        return cur < prev ? cur : prev;
    });
}
document.write(getMinimum([6, 4, 6, 9]) + '<br>');
document.write(getMinimum([6, 4]) + '<br>');
document.write(getMinimum([42]) + '<br>');