JavaScript。while 循环无法识别全局变量

Jul*_*ius 1 javascript global-variables while-loop

我在 codecadamy.com 上的 Javascript 教程午餐时间。

我有这个简单的循环:

var cards = ['Diamond', 'Spade', 'Heart', 'Club'];
var currentCard = 'Heart';

while (currentCard !== 'Spade') {
  console.log(currentCard);

  var randomNumber = Math.floor(Math.random() * 4);

  currentCard = cards[randomNumber];
}

console.log('Found a Spade!');
Run Code Online (Sandbox Code Playgroud)

这很好,但是如果我randomNumber从循环中删除并与其他全局变量一起放置,codecademy 控制台不会打印结果......

由于全局变量应该可用于该循环,我认为 codecademy 控制台有问题?

你同意这应该有效吗?

var cards = ['Diamond', 'Spade', 'Heart', 'Club'];
var currentCard = 'Heart';
var randomNumber = Math.floor(Math.random() * 4);

while (currentCard !== 'Spade') {
  console.log(currentCard);
  currentCard = cards[randomNumber];
}

console.log('Found a Spade!');
Run Code Online (Sandbox Code Playgroud)

iam*_*ith 5

通过将随机数移到循环之外,意味着它仅被评估一次。

因此,第一次循环运行时,如果随机数最终为除 之外的任何值1,则 while 循环将无限运行,因为currentCard将始终不等于'Spade'

所以正在发生的事情是,codeacademy 控制台将无限循环地评估,并且可能最终崩溃。