在Code Academy JS课程Dragon Slayer 2/6中,提示中使用以下文本来描述标题中包含的代码的操作顺序.
这段代码是如何工作的?
Math.floor(Math.random() * 5 + 1);
首先,我们使用Math.random()创建一个从0到1的随机数.例如,0.5
然后我们乘以5使随机数从0到5.例如,0.5*5 = 2.5
接下来,我们使用Math.floor()向下舍入到整数.例如,> Math.floor(2.5)= 2
最后我们添加1来将范围从0到4更改为1到> 5(最多包括5)
我已经在几个不同的地方(这里和这里)看了这个,其中大部分都集中在Math.random()产生的范围(我理解)或确认提示中概述的操作顺序,其中"Math.floor"在添加"+1"之前作用于"Math.random()*5".
然而,在我看来,根据我在学校学到的操作顺序,最后两个步骤应该翻转.那不是这种情况,因为"Math.random()*5"和"+ 1"都在括号内吗?
虽然这两者之间的差异可能不会对这个特定代码返回的值产生影响,但我可以看到操作顺序发生了根本性的变化,就像这里概述的那样,如果我不这样做会让我感到有些沮丧知道.
在计算完毕后,Math.floor()将对括号内的任何内容起作用.
Math.floor(Math.random() * 5 + 1)
是相同的
var i = Math.random() * 5; i += 1; Math.floor(i);