【问题标题】:How to define a var in an array?如何在数组中定义一个var?
【发布时间】:2012-02-05 17:30:58
【问题描述】:

用 JS 构建我的第一个真正的应用程序:Black Jack。我只是想知道为什么我的jqka var 会以undefined 的形式返回。

window.onload = init;
var cards = [2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,j,j,j,j,q,q,q,q,k,k,k,k,a,a,a,a];
var j = 10;
var q = 10;
var k = 10;
var a = 11;
function init() {
    var button = document.getElementById("doIt");
    button.onclick = processIt;
}
function processIt() {
    var cpu1 = document.getElementById("cpu1");
    cpu1.innerHTML = cards[37];
}

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript arrays var


    【解决方案1】:

    因为在您声明 cards 的那一刻,这些变量(或者更确切地说,它们的值)仍未定义。重新排序声明。

    var j = 10;
    var q = 10;
    var k = 10;
    var a = 11;
    var cards = [2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,j,j,j,j,q,q,q,q,k,k,k,k,a,a,a,a];
    

    【讨论】:

    • 严格来说,这与声明无关,因为它们发生在任何代码执行之前,它与分配有关。在分配给 cards 的过程中使用变量时,它们的值是未定义的。
    【解决方案2】:

    您是在使用它们之后定义它们...您必须在使用它们之前定义变量,而不是之后。

    【讨论】:

      【解决方案3】:

      在 javascript 中,首先处理声明,但按顺序进行赋值。您的代码有效:

      var cards, j, q, k, a;
      
      // Here, all variables exist but none have a value
      // When cards is assigned an array, the values of j, q, k and a 
      // are still undefined.
      cards = [2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,
               8,9,9,9,9,10,10,10,10,j,j,j,j,q,q,q,q,k,k,k,k,a,a,a,a];
      
      // Now the rest are given values
      j = 10;
      q = 10;
      k = 10;
      a = 11;
      

      【讨论】:

      • 我试过了,它返回 undefined:
        var a;
        卡片 = [2,2,...,a,a]
        a = 11;
        有人介意解释为什么会这样,在我的书或谷歌中找不到很好的解释。
      • 以上解释了它发生的原因。为避免未定义,请在使用变量之前为其赋值(即将对 cards 的赋值移动到对 j、q、ka)。
      猜你喜欢
      • 2011-02-06
      • 2018-11-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-17
      相关资源
      最近更新 更多