You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何调用getComputerChoice()返回随机值,全局randomValue却始终不变?

问题原因分析:函数调用与全局变量的执行时机差异

核心差异在于代码的执行时机和重复执行逻辑:

  • 关于getComputerChoice()函数:
    每次调用这个函数时,函数体内部的所有代码都会重新执行一遍:重新计算随机索引Math.floor(Math.random() * arrayNum.length),从数组中取出对应的值赋值给函数内的局部变量randomValue,最后返回这个新生成的随机值。所以每次调用都会得到不同的随机结果。

  • 关于全局变量randomValue:
    这个变量的赋值操作只在代码第一次执行到该行时运行一次,计算出一个随机值并固定下来。后续多次console.log只是重复输出这个已经确定的变量值,不会重新执行随机计算的逻辑,所以结果始终相同。

另外补充:函数内部的randomValue是局部变量,每次函数调用都会重新创建并赋值;而全局的randomValue在整个程序生命周期中只初始化一次,这也是两者表现不同的辅助因素,但最核心的还是执行时机的区别。

内容的提问来源于stack exchange,提问作者Hottest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 08:09:18