【问题标题】:Global variables out of scope [closed]全局变量超出范围[关闭]
【发布时间】:2012-11-22 16:33:27
【问题描述】:

在我的程序中,我在顶部有全局变量,供游戏中的各种函数使用。有时调用它们时,它们在控制台中显示为未定义。我已经玩了很长时间,但似乎找不到问题的根源。是因为它们是数组,还是有别的原因?

var randomWord = [];
var listOfWords = [];
var gridSize = [];
var populationNumber = [];
var completionNumber = [];
var attemptNumber = [];

这是一个关于...中的脚本的小提琴

http://jsfiddle.net/sYDs4/1/

【问题讨论】:

  • 那个jsFiddle没有改成使用jQuery。也没有HTML,似乎应该有一些......
  • 请修复 JS Fiddle
  • 在nextButton 和closeButton 中,randomWord 变量用作数字,而不是数组。
  • 我怎样才能让它作为一个数组使用? @jaudette
  • 1,将代码粘贴到JSLint。 2、哭。如果你不想哭太多,可以使用JSHint。这些将指出 JavaScript 代码的大部分问题。

标签: javascript jquery variables scope


【解决方案1】:

这里有几个 cmets 不适合 cmets...

   if (populationNumber >= 6) {
        var populationNumber = 6;
    }
    if (completionNumber >= 6) {
        var completionNumber = 6;
    }

不应该在 JS 中完成,这很危险,因为您创建了一个与全局变量同名的局部变量。甚至没有提及您将数字分配给应该是数组(全局变量)的变量。

function nextButton() {
    //Next question click event
    $('td').removeClass('highlight-problem');
    var r = randomWord;
    while (r == randomWord) {
        randomWord = Math.floor(Math.random() * (listOfWords.length));
    }

这会将一个数字分配给randomWord,该数字在其他地方用作数组,但在此函数中用作数字。 closeButton 函数也是如此。

【讨论】:

    猜你喜欢
    • 2016-09-05
    • 2012-11-20
    • 2014-01-13
    • 1970-01-01
    • 2016-11-13
    • 2013-11-01
    • 2012-04-29
    • 2017-02-17
    相关资源
    最近更新 更多