gpt4 book ai didi

javascript - 为什么我的随机函数两次返回相同的值

转载 作者:行者123 更新时间:2023-12-01 00:58:52 24 4
gpt4 key购买 nike

上下文:我正在创建一个带有一些虚拟图表的虚拟网站。我需要类似的 js 对象中的一些随机值,如下所示:

object = {
x: static,
y: static,
...

data: random
}

所以我想出了这样的东西:

async function getOption() {
return getRandom();
}

async function setup() {
let template = {
static1: "xx",
static2: "xx",
option: 1
}

let v1 = template;
v1.option = await getOption();

let v2 = template;
v2.option = await getOption();

console.log(await getOption(), await getOption())
console.log(v1.option, v2.option)

}

function getRandom() {
return Math.floor(Math.random() * 100);
}

setup()

但是我发现了一些我不明白的奇怪现象。如果我想分配一个新数字,我每次都会得到两次相同的“随机”值。此外,如果我在 console.log() 中调用它,它会按预期工作。

现在我的问题:

N° 1:如何创建许多除 1 之外具有相同属性的大对象?

N° 2:为什么我会两次获得相同的值?这对我来说真的没有意义。我错过了什么吗?

最佳答案

v1 和 v2 只是对模板对象的引用。本质上,v1 和 v2 是相同的。看看这里的控制台。 v1 是一个随机值,v2 也是随机的,但它被 v2 覆盖:

async function getOption() {
return getRandom();
}

async function setup() {
let template = {
static1: "xx",
static2: "xx",
option: 1
}

let v1 = template;
v1.option = await getOption();

console.log('v1:', v1.option)
console.log('template:', template.option)


let v2 = template;
v2.option = await getOption();

console.log('v2:', v2.option)
console.log('template:', template.option)


console.log(v1.option, v2.option)

}

function getRandom() {
return Math.floor(Math.random() * 100);
}

setup()

编辑:如果您想制作副本,可以使用assign():

let template = {
static1: "xx",
static2: "xx",
option: 1
}


var obj = Object.assign({}, template);

template.option = "100"
obj.option = "200"

console.log(template.option, obj.option)

关于javascript - 为什么我的随机函数两次返回相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56294954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com