Javascript 我一条代码都听不懂

Javascript 我一条代码都听不懂,javascript,math,random,Javascript,Math,Random,我在理解一个简单的概念时遇到了问题。代码如下: var arr = [1, 3, 7, 9, 12, 5, 4, 6]; var randomArr = Math.floor(Math.random()*arr.length); console.clear(); console.log(randomArr); 我不明白的是,为什么Math.floorMath.random*arr.length每次都返回一个随机数,而Math.floorMath.random总是返回0?根据我的理解,Math.

我在理解一个简单的概念时遇到了问题。代码如下:

var arr = [1, 3, 7, 9, 12, 5, 4, 6];
var randomArr = Math.floor(Math.random()*arr.length);
console.clear();
console.log(randomArr);
我不明白的是,为什么Math.floorMath.random*arr.length每次都返回一个随机数,而Math.floorMath.random总是返回0?根据我的理解,Math.floorMath.random将始终返回0,因为他生成了一个介于0和11之间的值,所以在我的情况下Math.floorMath.random*arr.length不应该始终返回8吗

这是我目前不明白的,在这件事上找不到任何东西

谢谢。

返回小于或等于给定数字的最大整数。换句话说,它将一个数字向下舍入到最接近的整数

在您的代码中,Math.random*arr.length可以返回一个实数,就像Math.random可能返回.3一样,数组长度是8,因此将得到2,而不是随机数组元素2.4,如果您希望能够拾取数组元素的索引,这将更有意义。如果Math.random返回.5,那么您将得到一个整数,但在大多数情况下,您可能不会得到整数

破坏数学。地板形状。随机*沿长度向下:

arr.长度是8 Math.random返回从0到但不包括1的值。 Math.floor将Math.floor的结果向下舍入8次 使用.3作为Math.random返回值的示例:Math.floor.3*8Math.floor2.42 因此,给定Math.floorMath.random*arr.length代码,您将得到一个从0到7的整数,其中任何一个都可以用于选择arr数组中的项目,如arr[randomArr]。

返回小于或等于给定数字的最大整数。换句话说,它将一个数字向下舍入到最接近的整数

在您的代码中,Math.random*arr.length可以返回一个实数,就像Math.random可能返回.3一样,数组长度是8,因此将得到2,而不是随机数组元素2.4,如果您希望能够拾取数组元素的索引,这将更有意义。如果Math.random返回.5,那么您将得到一个整数,但在大多数情况下,您可能不会得到整数

破坏数学。地板形状。随机*沿长度向下:

arr.长度是8 Math.random返回从0到但不包括1的值。 Math.floor将Math.floor的结果向下舍入8次 使用.3作为Math.random返回值的示例:Math.floor.3*8Math.floor2.42
因此,给定代码Math.floorMath.random*arr.length,您将得到一个从0到7的整数,其中任何一个都可以用于选择arr数组中的项目,如arr[randomArr]。

Math.Floor返回插入数字的较低值,Math.random给出一个介于0和1之间的数字,因此它将始终降低到0。你知道Math.random的作用吗?你知道Math.floor做什么吗?从这里开始,找出你不理解的行为,必要时问一个更具体的问题;console.log a,a*8,Math.floora*8;也许它变得更清楚了。不,因为Math.random生成了一个介于0和1之间的值,乘以8将返回一个介于0和8Math之间的数字。Floor返回插入数字的较低值Math.random给出一个介于0和1之间的数字,所以它将始终降低到0。你知道Math.random的作用吗?你知道Math.floor做什么吗?从这里开始,找出你不理解的行为,必要时问一个更具体的问题;console.log a,a*8,Math.floora*8;不,因为Math.random生成了一个介于0和1之间的值,乘以8将返回一个介于0和8之间的数字