JavaScript入门疑问:为何相同变量运行后会产生不同结果?
为什么相同变量却得到不同运行结果?
嘿,作为JavaScript初学者能注意到这个细节真的很棒!咱们来一步步拆解问题根源:
核心原因:Math.random()的随机性
你的代码里反复用到了Math.random()这个函数,它的特性就是每次被调用时,都会生成一个全新的、介于0(包含)到1(不包含)之间的随机小数。这就像你每次掷骰子都会得到不同的点数一样,每次运行代码时,这个函数都会输出不一样的值,进而影响依赖它的所有变量。
咱们顺着你的代码走一遍,就能看明白:
- 变量
a的值是Math.floor(Math.random() * 10):每次运行时,Math.random()生成新的随机数,乘以10后取整,会得到0-9之间的随机整数,所以a每次都不一样。 - 变量
b是10 - a:因为a每次变,b自然也跟着变。 - 变量
c是Math.floor(Math.random() * b):这里又调用了一次Math.random(),生成新的随机数,再乘以变化的b取整,所以c的值也会跟着每次变化。 - 变量
d是a + c:既然a和c都在变,d的结果肯定也不一样啦。
举个实际例子对比
比如第一次运行代码时:
Math.random()生成0.35,a = Math.floor(0.35*10) = 3b = 10 - 3 =7- 第二次调用
Math.random()生成0.2,c = Math.floor(0.2*7)=1 d=3+1=4
第二次运行代码时:
Math.random()生成0.82,a = Math.floor(0.82*10)=8b=10-8=2- 第二次调用
Math.random()生成0.7,c=Math.floor(0.7*2)=1 d=8+1=9
你看,虽然变量名都是a、c、d,但每次运行时它们存储的都是全新的随机值,所以输出结果自然不同啦!
内容的提问来源于stack exchange,提问作者Manomite
相关产品推荐
相关产品推荐

