我有一个逻辑问题,我不确定JavaScript是否提供了解决此问题的特殊方法。在下面的简化测试代码中,我使用函数创建一个随机数,并将其放入数组值两次。我需要在两个地方使用相同的随机数,但显然如果我两次调用randomNumber()
,我会得到两个不同的返回值。我知道我可以将返回值存储在变量中并多次调用该变量。但JavaScript是否为这样的问题提供了任何其他方法?
"use strict";
let myArray = [
`Use a random number once here, ${randomNumber()}, and the same value again here ${randomNumber()}.`
];
function randomNumber() {
return Math.random() * 10;
}
document.querySelector('.output').textContent = myArray[0];
<div class="output"></div>
答案 0 :(得分:3)
您可以将数组元素定义为返回所需字符串的IIFE,并传入randomNumber()
的(单个)结果:
"use strict";
let myArray = [
((rnd) => `Use a random number once here, ${rnd}, and the same value again here ${rnd}.`)(randomNumber())
];
function randomNumber() {
return Math.random() * 10;
}
document.querySelector('.output').textContent = myArray[0];
<div class="output"></div>
答案 1 :(得分:1)
使用generator ...
function *randomize(num = Math.random() * 10) {
for (;;) yield num
}
let myNum = randomize(),
myArray = [
`Use a random number once here, ${myNum.next().value}, and the same value again here ${myNum.next().value}.`
];