一个单一的全局变量,每次被引用时总是一个随机数

A single global variable that is always a random number each time it's referenced

我想使用一个每次使用时都是随机的全局变量。我当前的方法创建一个随机数一次,该数字保持不变。我不需要号码是唯一的,只要是随机的即可。

var randomNumber = Math.floor(Math.random() * 100);
$('something').css('width', randomNumber)
$('something-else').css('width', randomNumber) // want a different random number
$('a-totally-different-thing').css('width', randomNumber) // want another different random number

有没有办法做到这一点,还是每次都必须使用不同的变量?我想要这样做的主要原因是为了保持代码的清洁和可读性,而不必在任何地方一遍又一遍地输入 Math.floor(Math.random() * 100) 。我正在尝试生成艺术,所以它会被大量使用。我希望它是全球性的,这样我就可以从任何地方引用它。

答:用函数代替变量。非常感谢 VLAZ 和 CherryDT

您可以在全局对象上定义一个getter:

Object.defineProperty(globalThis, 'randomNumber', {
  get: () => Math.floor(Math.random() * 100)
})

console.log(randomNumber)
console.log(randomNumber)
console.log(randomNumber)

...但我觉得这很奇怪,如果我在代码中遇到它,实际上会认为这是意想不到的、令人困惑的行为。为什么不改用函数?

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

console.log(getRandomNumber())
console.log(getRandomNumber())
console.log(getRandomNumber())