0

我有一个变种..

var random = Math.ceil(Math.random() * 8.8);

我有一个点击功能

$('.passShort').bind('click', function() {
     // do something here and get new random number
});

我正在尝试更改全局随机变量,而不仅仅是在这个特定函数内部。

4

3 回答 3

1

当全局变量需要真正全局时,我喜欢严格定义它们,并且尽可能避免重复代码:

setRandom();

$('.passShort').bind('click', setRandom);

function setRandom() { window.random = Math.ceil( Math.random() * 8.8 ); };

在对象上设置变量window可确保它是真正的全局变量。您可以在random任何地方引用它,它会给您,window.random但使用window.random确保您正在设置全局random变量的值。

于 2013-02-18T04:04:44.873 回答
0

在函数外部使用var,但不在函数内部使用:

var random = Math.ceil(Math.random() * 8.8);
$('.passShort').bind('click', function() {
     random = Math.ceil(Math.random() * 8.8);
});
于 2013-02-18T03:57:01.017 回答
0

根据您声明random变量的位置,将确定它的范围。如果你想让它成为全局的,只需声明它而不使用var关键字。

random = Math.ceil(Math.random() * 8.8);

真的,如果您可以将您正在寻找的功能组合到一些可重用的对象(随机数生成器)中会更好吗?一个例子可能是:

var RNG = {      
  get randInt() { return Math.ceil(Math.random() * 8.8); },
  get randFloat() { return Math.random() * 8.8; },
  randRange: function(min, max) { 
    return min + Math.floor(Math.random() * (max - min + 1));
  }
};

console.log(RNG.randInt);
console.log(RNG.randFloat);
console.log(RNG.randRange(5,10));

$('.passShort').bind('click', function() {
  console.log(RNG.randInt); // Whatever you want here.
});
于 2013-02-18T03:58:58.363 回答