JS:为什么我的变量被分配了一个函数而不是调用函数?

时间:2014-08-29 03:24:00

标签: javascript

我试图在地图上设置一些随机坐标。我编写了console.log行以查看它是否成功选择了数字,但是它告诉我destinations数组中的所有内容都是NaN。

看起来它将Math.random函数分配给变量而不是调用Math.random并给它返回的数字。任何人都知道了什么?

var nodeCount = 10
var mapSize = 100;

var destinations = new Array(nodeCount);
for (var i = 0; i < nodeCount; i++) {
    destinations[i] = new Array(2);
}

var generateDestinations = function(nodeCount) {
    for (var i=0; i<nodeCount; i++) {
        destinations[i][0] = Math.floor(Math.random*mapSize); //sets x-coord
        destinations[i][1] = Math.floor(Math.random*mapSize); //sets y-coord
        console.log(destinations);
    }
};
generateDestinations(nodeCount);

2 个答案:

答案 0 :(得分:2)

Math.random()是一个函数,因此需要使用call-operator调用:

Math.floor(Math.random() * mapSize);
//                    ^^

下面的一行也是如此。


此外,您可以使用数组文字语法而不是调用构造函数。它更清洁,更具表现力:

var destinations = [];
for (var i = 0; i < nodeCount; i++) {
    destinations[i] = [];
}

答案 1 :(得分:0)

http://www.w3schools.com/jsref/jsref_random.asp

尝试这个,看起来像是你定义的最大值而不是min,(我假设你想要一个介于0和mapSize之间的数字)

    //                         \/ max value
    Math.floor((Math.random()*mapSize) + 0);
    //                                   /\ min value

Math.random也是一个函数,所以它的

Math.random()