为何调用getComputerChoice()返回随机值,全局randomValue却始终不变?
问题原因分析:函数调用与全局变量的执行时机差异
核心差异在于代码的执行时机和重复执行逻辑:
关于
getComputerChoice()函数:
每次调用这个函数时,函数体内部的所有代码都会重新执行一遍:重新计算随机索引Math.floor(Math.random() * arrayNum.length),从数组中取出对应的值赋值给函数内的局部变量randomValue,最后返回这个新生成的随机值。所以每次调用都会得到不同的随机结果。关于全局变量
randomValue:
这个变量的赋值操作只在代码第一次执行到该行时运行一次,计算出一个随机值并固定下来。后续多次console.log只是重复输出这个已经确定的变量值,不会重新执行随机计算的逻辑,所以结果始终相同。
另外补充:函数内部的randomValue是局部变量,每次函数调用都会重新创建并赋值;而全局的randomValue在整个程序生命周期中只初始化一次,这也是两者表现不同的辅助因素,但最核心的还是执行时机的区别。
内容的提问来源于stack exchange,提问作者Hottest
相关产品推荐
相关产品推荐

